相关疑难解决方法(0)

平面文件 NoSQL 解决方案

对于小型项目,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
Run Code Online (Sandbox Code Playgroud)

注意:多年来,我一直惊讶于 SQLite 实际上可以在几行代码中实现多少有趣的功能,这就是为什么我问我这里描述的内容是否可以通过 SQLite 仅使用一些 SQLite 核心功能。

PS:可能看起来像一个解决方案,但实际上它只是一个持久的键/值存储,并且它不具有查询/功能; 此外(BerkeleyDB for Python)看起来已被弃用,并且没有类似 API 的查询功能。shelve findbsddb

python sql database sqlite nosql

10
推荐指数
2
解决办法
2283
查看次数

密钥:Python中的值存储可能有100 GB的数据,没有客户端/服务器

解决方法有很多连载小词典:json.loads/ json.dumps,pickle,shelve,ujson,甚至使用sqlite.

但是当处理可能100 GB的数据时,再也不可能使用在关闭/序列化时可能重写整个数据的模块.

redis 实际上不是一个选项,因为它使用客户端/服务器方案.

问题:哪些密钥:值存储,无服务器,能够使用100多GB数据,在Python中经常使用?

我正在寻找具有标准"Pythonic" d[key] = value语法的解决方案:

import mydb
d = mydb.mydb('myfile.db')
d['hello'] = 17          # able to use string or int or float as key
d[183] = [12, 14, 24]    # able to store lists as values (will probably internally jsonify it?)
d.flush()                # easy to flush on disk 
Run Code Online (Sandbox Code Playgroud)

注意:BsdDB(BerkeleyDB)似乎已被弃用.似乎有一个用于PythonLevelDB,但它似乎并不为人所知 - 我还没有找到一个可以在Windows上使用的版本.哪些是最常见的?

python serialization dictionary key-value key-value-store

8
推荐指数
5
解决办法
6533
查看次数