一个MySQL快捷操作方式

MyQuer的Python项目详细描述


MyQuery

简介

基于 mysql-connector-python 的一个封装,提供了更简易的操作接口

基于 mysql-connector-python 文档:文档

安装

pip install myquery

使用示例

1、数据库建表

CREATETABLE`person`(`id`int(11)NOTNULLAUTO_INCREMENT,`age`int(11)DEFAULTNULL,`name`varchar(255)DEFAULTNULL,PRIMARYKEY(`id`))

2、Database类

2.1 配置

bd_url="mysql://root:123456@127.0.0.1:3306/data?charset=utf8&autocommit=true"# Deprecated# db = DataBase(db_url=bd_url)db=DataBase.from_url(bd_url)# 或者config={"host":"127.0.0.1","port":3306,"username":"root","password":"123456","database":"data","charset":"utf8","autocommit":True}db=DataBase(**config)

2.2 打开关闭数据库

# -*- coding: utf-8 -*-frommyquery.databaseimportDataBasedb_url="mysql://root:123456@127.0.0.1:3306/data?autocommit=true"db=DataBase(db_url=db_url)db.close()

2.3 插入数据

# insert_one 返回插入数据的自增id# 命名占位符user1={"name":"Tom","age":23}sql="insert into person (name, age) values (%(name)s, %(age)s)"ret=db.insert_one(sql,user1)print(ret)# 1sql="insert into person (name, age) values (:name, :age)"ret=db.insert_one(sql,user1)print(ret)# 2# 占位符user2=["Tom",23]sql="insert into person (name, age) values (%s, %s)"ret=db.insert_one(sql,user2)print(ret)# 3sql="insert into person (name, age) values (?, ?)"ret=db.insert_one(sql,user2)print(ret)# 4# 批量插入数据, insert返回插入数据的条数user1={"name":"Tom","age":23}user2={"name":"Jack","age":24}sql="insert into person (name, age) values (:name, :age)"ret=db.insert(sql,[user1,user2])print(ret)# 2

2.4 更新数据

# update 返回影响行数user1={"name":"Tom","age":23}sql="update person set name = :name, age = :age"ret=db.update(sql,user1)print(ret)

2.5 删除数据

# delete 返回影响行数sql="delete from person where id = :id"ret=db.delete(sql,{'id':32})print(ret)

2.6 查询数据

# select_one 返回字典数据,select返回列表数据sql="select * from person where id = :id"ret=db.select_one(sql,{'id':1})print(ret)# {'id': 1, 'age': 23, 'name': 'Tom'}sql="select * from person where id > :id"ret=db.select(sql,{'id':1})print(ret)# [{'id': 3, 'age': 23, 'name': 'Tom'}]

2.7 获取Table类

user1={"name":"Tom","age":23}table=db.table("person")ret=table.insert_one(user1)print(ret)

2.8 事务

sql1="update person set name = 'xxx' where id = 1"sql2="update person set name = 'yyy' where id = 2"db.transaction()ret1=db.update(sql1)ret2=db.update(sql2)print(ret1)print(ret2)db.rollback()

3、Table类

Table类提供了常用的数据操作

frommyquery.tableimportTableclassPersonTable(Table):table_name="person"database=db# 插入一条数据user1={"name":"Tom","age":23}ret=PersonTable.insert_one(user1)# INSERT INTO person (`name`, `age`) VALUES ('Tom', 23)print(ret)# 批量插入数据user1={"name":"Tom","age":23}user2={"name":"Tom","age":23}ret=PersonTable.insert([user1,user2])# INSERT INTO person (`name`, `age`) VALUES ('Tom', 23),('Tom', 23)print(ret)# 获取数据ret=PersonTable.select_by_id(1)# SELECT * FROM person WHERE `id` = 1print(ret)# 更新数据user1={"name":"Tom","age":24,"id":1}ret=PersonTable.update_by_id(user1)#  UPDATE person SET `name` = 'Tom', `age` = 24 WHERE `id` = 1print(ret)# 删除数据ret=PersonTable.delete_by_id(2)# DELETE FROM person WHERE `id` = 2print(ret)# 表中数据条数ret=PersonTable.count()# SELECT count(*) FROM personprint(ret)

4、ReconnectionDataBase

如果需要使用长链接的场景下,可以使用:

db=ReconnectionDataBase(db_url=url)

会在每次 发送sql语句到mysql之前,先执行ping测试连接情况

更新记录

  • 2020-11-30 新增方法DataBase.from_url(bd_url)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败