python的mysql链式操作,SQL构建器,告别原生写法

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

总表结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值