【发布时间】:2020-07-20 03:06:46
【问题描述】:
对于小型项目,SQLite(或类似的)是否有内置的方法来保持 SQL / NoSQL 两全其美,即:
- 存储在(平面)文件中,如 SQLite(无需客户端/服务器方案,无需安装服务器;更准确地说:除了
pip install <package>外无需安装其他任何东西) - 可以将行存储为
dict,而每行没有共同的结构,如 NoSQL 数据库 - 支持简单查询
例子:
db = NoSQLite('test.db')
db.addrow({'name': 'john doe', 'balance': 1000, 'data': [1, 73.23, 18]})
db.addrow({'name': 'alice', 'balance': 2000, 'email': 'a@b.com'})
for row in db.find('balance > 1500'):
print(row)
# {'id': 'f565a9fd3a', 'name': 'alice', 'balance': 2000, 'email': 'a@b.com'} # id was auto-generated
注意:多年来,我一直对 SQLite 在几行代码中实际上可以实现多少有趣的功能感到惊讶,这就是为什么我要问我在这里描述的内容是否可以通过 SQLite 简单地使用仅使用几个 SQLite 核心功能。
PS:shelve可能看起来像一个解决方案,但实际上它只是一个持久键/值存储,它没有查询/find 功能;还有bsddb(BerkeleyDB for Python)看起来已被弃用,并且没有类似 API 的查询功能。
【问题讨论】:
标签: python sql database sqlite nosql