python的dbpoolpy库使用connect_db和数据库交互例子
介绍
python使用此库可以方便的操作数据库数据,主要是用在关系型数据库,可以支持SQLite3, MySQL, PostgreSQL
安装教程
pip install dbpoolpy
特点
- 和数据库交互方便,不需要写sql语句
- 支持三种数据库类型:SQLite3, MySQL, PostgreSQL
- 可同时连接多个数据库
使用说明
connect_db可以返回连接池的一个连接,在with语句中执行多步数据库操作,期间不会释放连接,
with语句执行完后,会自动把数据库连接放回到连接池里。
使用connect_db和数据库交互
pymysql安装方法:pip install pymysql
,
参考以下代码
import pymysql
from dbpoolpy import init_pool, connect_db
DATABASE = {
'dbcon1': { # 连接池名称
'engine': pymysql, # 取数据库所使用的插件:mysql使用pymysql, SQLite3使用python自带的sqlite3, PostgreSQL使用psycopg2
'database': '', # 默认连接的数据库
'host': '', # 数据库地址
'port': 51000, # 数据库端口
'user': '', # 数据库用户名
'password': '', # 数据库的密码
'charset': 'utf8', # 字符集类型
'mincached': 0, # 初始化连接数
'maxconnections': 10 # 数据库连接池的最大连接数
}
}
init_pool(DATABASE)
with connect_db('dbcon1') as db:
# 只取第一条数据
first_data = db.select("table_name").fields(
"field1, field2, field3"
).where(
field1='152901',
field2=("between", ['2022-04-01', '2022-05-01']),
field3=("in", [1,2,3])
).first()
print(first_data)
# 取所有数据
all_datas = db.select("table_name").where(
field2=(">", '2022-04-01'),
field3=6,
field4=("in", ["third_ML", "third_XZ", "third_MF"]),
).group_by( # group_by 可省略
"field2"
).order_by( # order_by 可省略
'field1 desc'
).limit( # limit 可省略
20
).all(isdict=False) # isdict默认为True,返回是dict,如果False, 则返回元组
print(all_datas)
# 插入数据
new_id = db.insert("table_name").values( # 如果表中有自增主键id,则会返回new_id,如果没有,则不会返回new_id
field1="value1", # 字符串值
field2=3, # 数字
field3="2023-05-12", # 日期值
).execute()
# 更新数据
db.update("table_name").values(
field1="value1", # 字符串值
field2=3, # 数字
field3="2023-05-12", # 日期值
).where(
field2=(">", '2022-04-01'),
field3=6,
field4=("in", ["third_ML", "third_XZ", "third_MF"]),
).execute()
# 删除数据
db.delete("table_name").where(
field1=(">", '2022-04-01'),
field2=6,
).limit(20).execute() # limit可省略
# 执行查寻sql语句
datas = db.query(sql="SELECT * FROM table_name where id=%s", args=(23,))
# 执行增改删sql
db.execute(sql="DELETE from table_name where id=%s", args=(23,))
代码非常的简洁, 可以实现增删改查的操作。
参考地址:https://gitee.com/zsq_tee/dbpoolpy