Skip to main content

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 中用于SpreasheetWorksheet的所有方法也可以在 gspread_db 中用于数据库和表。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

gspread_db-1.2.tar.gz (7.1 kB 查看哈希

已上传 source

内置分布

gspread_db-1.2-py3-none-any.whl (8.7 kB 查看哈希

已上传 py3