aiorm是一款简单易用的数据库工具,支持链式调用,学习成本极低。
支持 MySQL PostgreSQL 和 SQL Server.分别使用 pymysql pymssql psycopg2 来支持不同类型的数据库,具体 python 以这几个包为准,开发环境为python3.6.
方法
insert, select, update, delete, execute, executemany, increase, decrease 方法应在链式调用的最后执行,对数据库的操作会立即生效.
last_sql方法可返回最后执行的语句
get_fields_name方法可获取所有字段名
where方法可接受字典或字符串类型,IN 支持字符串或字符串组成的元组或列表.
select和get 方法只返回数据
update,delete,execute 等方法返回字典,包括:lastrowid, rowcount, rownumber, sql.
各种 join 请使用字符串参数,配合使用的 where 也用字符串参数.
注意
saiorm 不会转换 WHERE 中原生函数的参数和IN的参数,以及其他条件里的参数,如果条件需要使用用户传递进来的参数,请务必检查,以避免注入漏洞.
可以通过继承 saiorm.base.BaseDB 实现使用相同的 API 支持其他类型的数据库,可以参考siaorm.PostgreSQL.ChainDB.
如果要使用原生函数,请在参数前添加前缀 `,如果需要向原生函数传参,请使用元组或列表,使用 ? 作为参数的占位符,实际参数在后面传递,或者直接拼接字符串.
SQL Server 依赖的 pymssql 不会返回执行的语句,如果需要,必须在调用 connect 方法时手动设置return_sql=True ,让 saiorm用格式化查询语句的方式生成,以提高性能.需要在 调用 table 方法时传入primary_key,以实现对 LIMIT 的支持.
用法
初始化 MySQL:
初始化 PostgreSQL:
初始化 SQL Server:
下面的用法中转换的 SQL 都是 MySQL 风格的,和 PostgreSQL 以及 SQL Server 可能有些不同,特别是 LIMIT.
查询:
select 和 get 方法可限制字段名,默认返回所有字段.
更新:
UPDATExxxSETc=ABS(2),d=ABS(3),e='2'WHEREaIN(1,2,3)ANDb=ABS(2) ;
插入:
删除: