AioSQL和数据库连接的便捷包装
项目描述
AnoDB
描述
此类创建持久数据库连接,并将SQL查询从文件导入为简单的Python函数。
如果连接中断,将尝试以递增的节流延迟重新建立连接。
与aiosql
相比,其目的不是需要在每次调用时传递连接作为参数:DB
类嵌入连接和查询方法。
对于并发编程(线程、greenlets…),相关设置也应考虑某些高级层面的线程本地和池化问题。
示例
使用pip install anodb
或您喜欢的任何方法安装模块。一旦可用
import anodb
# parameters: driver, connection string, SQL file
db = anodb.DB("sqlite3", "test.db", "test.sql", kwargs_only=True)
db.create_stuff()
db.do_some_insert(key=1, val="hello")
db.do_some_update(key=1, val="world")
print("data", db.do_some_select(key=1))
print("norm", db.compute_norm(c=3+4j))
db.commit()
db.close()
使用包含类似内容的文件test.sql
-- name: create_stuff#
CREATE TABLE Stuff(key INTEGER PRIMARY KEY, val TEXT NOT NULL);
-- name: do_some_select^
SELECT * FROM Stuff WHERE key = :key;
-- name: do_some_insert!
INSERT INTO Stuff(key, val) VALUES (:key, :val);
-- name: do_some_update!
UPDATE Stuff SET val = :val WHERE key = :key;
-- name: compute-norm$
SELECT SQRT(:c.real * :c.real + :c.imag * :c.imag);
文档
《anodb》模块提供了包含PEP 249数据库连接(提供commit
、rollback
、cursor
、close
以及与其相对应的connect
方法以重新连接)以及由aiosql动态生成的函数包装的SQL查询的DB
类。这些函数可以从字符串(add_queries_from_str
)或路径(add_queries_from_path
)中加载。
DB
构造函数的参数包括:
db
数据库驱动程序名称:sqlite3
、psycopg
、pymysql
等,具体支持的驱动程序列表请参阅aiosql文档。conn
用于与驱动程序建立连接的可选连接字符串。例如,psycopg
接受类似以下格式的libpq连接字符串:"host=db1.my.org port=5432 dbname=acme user=calvin …"
。queries
包含查询定义的路径名称或路径名称列表。options
传递额外连接参数的字典或字符串。auto_reconnect
是否在连接丢失时尝试重新连接。默认为True
。重新连接尝试将以2的幂次方延迟指数递减,从0.001开始,最大延迟为30.0秒。kwargs_only
是否只接受Python函数的命名参数。attribute
属性点访问替换,默认为"__"
,使用None禁用。exception
重新处理数据库异常的函数。debug
是否生成调试消息。默认为False
。- 其他命名参数作为额外的连接参数传递。
import anodb
db = anodb.DB("sqlite3", "acme.db", "acme-queries.sql")
db = anodb.DB("duckdb", "acme.db", "acme-queries.sql")
db = anodb.DB("psycopg", "host=localhost dbname=acme", "acme-queries.sql")
db = anodb.DB("psycopg", None, "acme-queries.sql", host="localhost", user="calvin", password="...", dbname="acme")
db = anodb.DB("psycopg2", "host=localhost dbname=acme", "acme-queries.sql")
db = anodb.DB("pygresql", None, "acme-queries.sql", host="localhost:5432", user="calvin", password="...", database="acme")
db = anodb.DB("pg8000", None, "acme-queries.sql", host="localhost", port=5432, user="calvin", password="...", database="acme")
db = anodb.DB("MySQLdb", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("pymysql", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("mysql-connector", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("mariadb", None, "acme-queries.sql", host="localhost", port=3306, user="calvin", password="...", database="acme")
db = anodb.DB("pymssql", None, "acme-queries.sql", server="localhost", port=1433, user="sa", password="...", database="acme", as_dict=True, autocommit=False)
许可证
此代码为公共领域。
所有软件都有bug,这同样是软件,因此……请注意,您可能会因为使用它而失去头发或朋友。如果您喜欢它,请随时向作者寄一张明信片。
版本
项目详情
下载文件
下载适用于您平台文件的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。
源代码分发
anodb-12.0.tar.gz (12.4 kB 查看哈希值)
构建分发
anodb-12.0-py3-none-any.whl (8.3 kB 查看哈希值)
关闭
anodb-12.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 84be4e605a5526fdcab1af99b570665f9a5e29b337a995424b867bfa0f518617 |
|
MD5 | f4521344e7e074596b54b7dbe9f3d746 |
|
BLAKE2b-256 | 6672b899bbcce0d9a5e2b51457040c10fa7006b6b66422a717fef39193c68055 |
关闭
anodb-12.0-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 41d49dc41fe8a9cef4d8fc9f2701fa9d933a2259500059d958689e2dc99fd6d1 |
|
MD5 | d41bae90d76e7884b5fce453b254bd5f |
|
BLAKE2b-256 | c4d6102b603d3040f023d3ef8de5a520b06dbdefec23836eb60c57aba95fd3f8 |