Python的mysql链式操作,ABuilder告别繁琐的模型定义,节省开发时间,几乎没有任何要求,导入直接使用。与常规模型不同ABuilder不需要预先定义表字段、字段类型、字段长度等繁琐的设置,当然那样做有它的优点这里就不说了~,各具所长取舍看个人。ABuilder支持入直接使用,简单、快速、便捷
安装 a-sqlbuilder
pip install a-sqlbuilder
数据库配置文件 我们需要开发者在项目更目录中加入database.py 数据库配置文件 确保from database import database能获取到数据库配置项
class Config(object):
pass
class Proconfig(Config):
pass
class Devconfig(Config):
debug = True
DATABASE_URI = 'mysql+pymysql://root:root@127.0.0.1:3306/target'
data_host = '127.0.0.1'
data_passward = 'root'
data_user = 'root'
database = 'target'
data_port = 3306
charset = 'utf8mb4'
database = Devconfig
支持函数
目前项目只支持一些简单用法具体如下
table 查询表
where where条件
where_or 设置or条件
field 查询字段
limit 查询条数
group 分组
order 排序
join 连表查询
first 查询单条
query 查询多条
pluck 查询单个字段
insert 插入
update 修改
delete 删除
select 执行原生查询
commit 事物提交
rollback 事物回滚
get_last_sql 获取执行sql
get_insert_id 获取插入id
from ABuilder.ABuilder import ABuilder
#查
data = ABuilder().table('test').limit(0,2).query()
#查询加where条件
data = ABuilder().table('test').where({"id":["=",1]}).first()
#多个查询条件
data = ABuilder().table('test').where({"id":['<=',10],"sex":["=","男"]}).query()
# 或则多个where拼接
data = ABuilder().table('test').where({"id":['<=',10]}).where({"sex":["=","男"]}).query()
比较符号支持 =,<>,<,>,<=,>=,in,like等
设置or条件 where_or使用方法与where大同小异
data =ABuilder().table('test').where_or({"id":["=",1]}).query()
比较符号支持 =,<>,<,>,<=,>=,in,like等
设置查询字段
data = ABuilder().table("test").field("id,sex").query()
data = ABuilder().table("test").field("count(*) as count").query()
*不设置field默认查询全部字段 ,查询字段使用,隔开,支持count(),sum()等 注意:不支持类似DATE_FORMAT(NOW(),’%m-%d-%Y’)这类带有%的函数!!!!!!!!!!
limit
查询数
data = ABuilder().table("test").limit(0,10).query()
#limit 第一个参数为开始查询位置,第二个参数为获取多少条
分组
data = ABuilder().table("test").field("count(*) as count").group('sex').query()
# 多个分组使用
data = ABuilder().table("test").field("count(*) as count").group('sex').group('id').query()
# sql为:select count(*) as count from user group by sex,age
排序
data = ABuilder().table("test").order("id","desc").query()
# 多个排序值
data = ABuilder().table("test").order("id","desc").order("sex",'asc').query()
# sql为:select * from tar_user order by user_id desc,sex asc
order by先后顺序:遵循从左到右
连表查
ABuilder().table('user as u').field('u.id,b.name').join('book b', 'u.id=b.user_id','INNER').where({"u.id": ['=', 1]}).query()
# sql为:select u.id,b.name from user as u INNER JOIN book b on u.id=b.user_id where u.id = 1
join三个参数说明
表名
列表条件 支持 and,or
join类型:INNER,LEFT,RIGHT,FULL 默认INNER
支持多个连表,拼接多个join即可。例如:table(‘table as t’).join(‘table1 t1’,‘t1.user_id=t.id’).join(‘table2 t2’,‘t1.id=t2.book_id’)
查询单条记录
data = ABuilder().table('test').where({"id":["=",2]}).first()
查询多条记录
data = ABuilder().table('test').where({"id":["in",(1,2)]}).query()
查询单个字段
data = ABuilder().table('test').where({"sex":["=",'男']}).pluck('id')
insert
总表结构