跳转到主要内容

AioSQL和数据库连接的便捷包装

项目描述

AnoDB

围绕aiosql数据库连接的便捷包装。

Status Tests Coverage Python Databases Drivers Version Badges License

描述

此类创建持久数据库连接,并将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数据库连接(提供commitrollbackcursorclose以及与其相对应的connect方法以重新连接)以及由aiosql动态生成的函数包装的SQL查询的DB类。这些函数可以从字符串(add_queries_from_str)或路径(add_queries_from_path)中加载。

DB构造函数的参数包括:

  • db 数据库驱动程序名称:sqlite3psycopgpymysql等,具体支持的驱动程序列表请参阅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,这同样是软件,因此……请注意,您可能会因为使用它而失去头发或朋友。如果您喜欢它,请随时向作者寄一张明信片。

版本

源代码文档问题可在GitHub上找到。

查看所有版本并从PyPI获取软件包

项目详情


下载文件

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

源代码分发

anodb-12.0.tar.gz (12.4 kB 查看哈希值

上传时间 源代码

构建分发

anodb-12.0-py3-none-any.whl (8.3 kB 查看哈希值)

上传时间 Python 3

支持者