标签归档:forhumans

Records-面向人类的sql

Records:用于人类的sql™

Records是一个非常简单但功能强大的库,用于对大多数关系数据库进行原始SQL查询

只需编写SQL即可。没有铃声,没有口哨。使用可用的标准工具,这项常见任务可能会出人意料地困难。该库努力使此工作流尽可能简单,同时提供一个优雅的界面来处理您的查询结果

数据库支持包括RedShift、Postgres、MySQL、SQLite、Oracle和MS-SQL(不包括驱动程序)


☤基础知识

我们知道如何编写SQL,所以让我们将一些内容发送到我们的数据库:

import records

db = records.Database('postgres://...')
rows = db.query('select * from active_users')    # or db.query_file('sqls/active-users.sql')

一次抓取一行:

>>> rows[0]
<Record {"username": "model-t", "active": true, "name": "Henry Ford", "user_email": "model-t@gmail.com", "timezone": "2016-02-06 22:28:23.894202"}>

或者迭代它们:

for r in rows:
    print(r.name, r.user_email)

可以通过多种方式访问值:row.user_emailrow['user_email'],或row[3]

还完全支持包含非字母数字字符(如空格)的字段

或存储您的记录集合的副本以供以后参考:

>>> rows.all()
[<Record {"username": ...}>, <Record {"username": ...}>, <Record {"username": ...}>, ...]

如果您只期待一个结果:

>>> rows.first()
<Record {"username": ...}>

其他选项包括rows.as_dict()rows.as_dict(ordered=True)

☤功能

  • 迭代行被缓存以供将来引用
  • $DATABASE_URL环境变量支持
  • 便利性Database.get_table_names方法
  • 用于导出查询的命令行记录工具
  • 安全参数化:Database.query('life=:everything', everything=42)
  • 查询可以作为字符串或文件名传递,支持的参数
  • 交易记录:t = Database.transaction(); t.commit()
  • 批量操作:Database.bulk_query()&Database.bulk_query_file()

唱片公司自豪地由SQLAlchemyTablib

☤数据导出功能

Record还具有完全的Tablib集成功能,允许您通过一行代码将结果导出为CSV、XLS、JSON、HTML表、YAML或Pandas DataFrames。非常适合与朋友共享数据或生成报告

>>> print(rows.dataset)
username|active|name      |user_email       |timezone
--------|------|----------|-----------------|--------------------------
model-t |True  |Henry Ford|model-t@gmail.com|2016-02-06 22:28:23.894202
...

逗号分隔值(CSV)

>>> print(rows.export('csv'))
username,active,name,user_email,timezone
model-t,True,Henry Ford,model-t@gmail.com,2016-02-06 22:28:23.894202
...

YAML Ain‘t Markup Language(YAML)

>>> print(rows.export('yaml'))
- {active: true, name: Henry Ford, timezone: '2016-02-06 22:28:23.894202', user_email: model-t@gmail.com, username: model-t}
...

JavaScript对象表示法(JSON)

>>> print(rows.export('json'))
[{"username": "model-t", "active": true, "name": "Henry Ford", "user_email": "model-t@gmail.com", "timezone": "2016-02-06 22:28:23.894202"}, ...]

Microsoft Excel(xls,xlsx)

with open('report.xls', 'wb') as f:
    f.write(rows.export('xls'))

熊猫数据帧

>>> rows.export('df')
    username  active       name        user_email                   timezone
0    model-t    True Henry Ford model-t@gmail.com 2016-02-06 22:28:23.894202

你说对了。Tablib的所有其他功能也可用,因此您可以对结果进行排序、添加/删除列/行、删除重复项、转置表格、添加分隔符、按列切片数据等

请参阅Tablib Documentation有关更多详细信息,请参阅

☤安装

当然,推荐的安装方法是pipenv

$ pipenv install records[pandas]
✨🍰✨

☤命令行工具

作为额外的奖励,一个records自动包括命令行工具。以下是使用信息的截图:

☤,谢谢你

感谢您借阅本图书馆!我希望你会觉得它有用

当然,总有改进的空间。请随意……open an issue所以我们可以把唱片做得更好、更强、更快

Requests-一个简单而优雅的HTTP库

Requests

Requests是一个简单而优雅的HTTP库

>>> import requests
>>> r = requests.get('https://api.github.com/user', auth=('user', 'pass'))
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.encoding
'utf-8'
>>> r.text
'{"type":"User"...'
>>> r.json()
{'disk_usage': 368627, 'private_gists': 484, ...}

请求允许您极其轻松地发送HTTP/1.1请求。不需要手动将查询字符串添加到URL,也不需要对PUT&POST数据-但现在,只需使用json方法!

Requests是目前下载量最大的Python包之一,14M downloads / week-根据GitHub的说法,请求目前正在depended upon通过500,000+存储库。您当然可以信任这段代码



安装请求和支持的版本

请访问PyPI上的Requests:

$ python -m pip install requests

Requests正式支持Python 2.7和3.6+

支持的功能和最佳做法

Requests已经为构建健壮可靠的HTTP语言应用程序的需求做好了准备,以满足当今的需求

  • 保活和连接池
  • 国际域名和URL
  • 具有Cookie持久性的会话
  • 浏览器样式的TLS/SSL验证
  • 基本和摘要身份验证
  • 熟悉dict-喜欢饼干
  • 自动内容解压缩和解码
  • 多部分文件上载
  • SOCKS代理支持
  • 连接超时
  • 流式下载
  • 自动兑现.netrc
  • 分块的HTTP请求

API参考和用户指南,请访问Read the Docs

克隆存储库

在克隆请求存储库时,您可能需要添加-c fetch.fsck.badTimezone=ignore用于避免有关错误提交的错误的标记(请参见this issue了解更多背景信息):

git clone -c fetch.fsck.badTimezone=ignore https://github.com/psf/requests.git

您还可以将此设置应用于全局Git配置:

git config --global fetch.fsck.badTimezone ignore