gspread 的类似数据库的接口。
项目描述
g扩展数据库
Anton Burnashev 的gspread是一个很棒的包,可以在 Python 中与 Google 电子表格进行交互。该软件包提供了一个类似电子表格的界面,用户可以在其中创建和删除工作表、更新单元格值、附加新值等。对于许多用户来说,这可能是与 Google 电子表格交互的最直观、最方便的方式,但对于许多应用程序来说,谷歌电子表格是基本上只是另一个数据库,因此类似数据库的界面可能更有意义。
gSpread DB为 gspread 添加了一个新的 API,支持最常见的数据库操作,如插入、删除、选择和更新。具体来说,电子表格被视为数据库,工作表被视为表格,每个表格/工作表的第一行被视为表格的标题。因此,所有操作都依赖此标头来了解哪些字段是什么。
您可以通过 Pip 安装 gspread_db:
pip3 install gspread_db
然后,您可以开始移动数据:
import gspread_db
# You can learn more about how to register your
# service and get API credentials at:
# https://gspread.readthedocs.io/en/latest/oauth2.html
spreadsheet_key = 'spreadsheet-key'
keyfile_dict = {
'type': 'service_account',
'project_id': 'you-project-id',
'private_key_id': 'prive-key-id',
'private_key': 'a-very-long-string',
'...': '...'
}
scope = ['https://spreadsheets.google.com/feeds']
auth = oauth2client.service_account.ServiceAccountCredentials
credentials = auth.from_json_keyfile_dict(keyfile_dict, scope)
client = gspread_db.authorize(credentials)
db = client.open_by_key(spreadsheet_key)
db.create_table(table_name='Users', header=['Username', 'Email'])
users = db['Users']
users.insert({'Username': 'annoys_parrot', 'Email': 'not-my-email@email.com'})
alessandro = users.select('Username', 'annoys_parrot')
请注意,select
操作pd.DataFrame
默认返回。这可以通过将as_pandas
参数设置为 来更改False
。
重要的是要注意表格的标题(即电子表格的第一行)不仅仅是一个美学元素。如果我们尝试插入一个新记录,其中的字段不包含在标头中,则操作将失败。
>>> _ = users.select(limit=1)
>>> users.header
['Username', 'Email']
>>> user.insert({'Password': '123456'})
RecordError: Keys in record must be a sub-set of header.
请注意,从 1.0 版开始,为了Table().header
返回任何内容,必须首先执行操作(这就是在上面示例的第一行中我们选择一行的原因)。这是因为电子表格中的标头在每次操作之前被解析,而不是在实例化时。
一个更全面的例子:
db.create_table(table_name='Users', header=['Username', 'Email'])
db['Users'].insert({'Username': 'Alan', 'Email': 'alan@turing.com'})
# There are multiple ways to select users.
alan = db['Users'].select('Username', 'Alan', as_pandas=False)
turing = db['Users'].select(where=[('Username', 'eq', 'Alan')], as_pandas=False)
alan == turing # True
print(alan)
# {
# 'Username': 'Alan',
# 'Email': 'alan@turing.com'
# }
# We can also limit the number of fields returned.
alan_email = db['Users'].select('Username', 'Alan', fields=['Email'])
# We can update values for records matching some criteria.
db['Users'].update('Username', 'Alan', new_values={'Email': 'new@email.com'})
# Lastly, we can delete records that match some criteria.
db['Users'].delete('Username', 'Alan')
# Note that for both update and delete all matching records will be updated
# or deleted. Make sure your conditions only match the right records!
文档
请注意,因为 gspread_db 只是 gspread 的一个包装器,所以 gspread 中用于Spreasheet和Worksheet的所有方法也可以在 gspread_db 中用于数据库和表。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
gspread_db -1.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d364d3a6e58bbd498ea9748b87235e3948c2f6d6d8b21b71ac029b376095cc45 |
|
MD5 | 14bedf7042e27da7aeb5011245cd0825 |
|
布莱克2-256 | 91bcf79336698f0734fda2eca4d5de8119c5362334f281fa5534d01df4fe395c |
gspread_db -1.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 91e951a5ce40b54b785c3e48aefd6b6de148d76af3715e28d63a752aac8a42f8 |
|
MD5 | a9583ec43cf14ffc4e097349cef7bedb |
|
布莱克2-256 | 3cb70d8df0aeef3114f0c3eddce2de66804737fbe41aa2b2e0ca6ee23b22d487 |