python中pymysql包操作数据库方法


Posted in Python onApril 19, 2022

一、安装

pip install pymysql

二、连接数据库

  • 三种连接数据库的方式
import pymysql

# 方式一
conn = pymysql.connect('localhost', 'root', 'root')

# 方式二
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root', db='', charset='utf8')

# 方式三
config = {
'host': '127.0.0.1',
'port': 3306,
'user': 'root',
'passwd': 'root',
'charset': 'utf8'
}
conn = pymysql.connect(**config)

三、创建数据库

  • 创建一个test数据库并进入
import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

cursor.execute('DROP DATABASE IF EXISTS test')
cursor.execute('CREATE DATABASE IF NOT EXISTS test')
conn.select_db('test')

四、创建数据表

  • 创建一张user表
import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

cursor.execute('CREATE TABLE user(id int primary key,name varchar(30))')

五、插入一条数据

import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

try:
# 执行SQL语句
sql = 'INSERT INTO user values("%d","%s")' %(1,"autofelix")
cursor.execute(sql)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
finally:
# 关闭游标连接
cursor.close()
# 关闭数据库连接
conn.close()

六、插入多条数据

import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

try:
# 执行SQL语句
values = [(1, 'autofelix'), (2, '飞兔小哥')]
cursor.executemany('INSERT INTO user values(%s,%s)', values)
# 提交到数据库执行
db.commit()
except:
# 发生错误时回滚
db.rollback()
finally:
# 关闭游标连接
cursor.close()
# 关闭数据库连接
conn.close()

七、数据统计

import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

count = cursor.execute('SELECT * FROM user')
# 统计数据总数
print('total records: %d' %count)
# 统计字段数
print('total records:', cursor.rowcount)

八、获取表名信息

import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

desc = cursor.description
print("%s %3s" % (desc[0][0], desc[1][0]))

九、获取单条数据

  • 使用 fetchone 方法获取单条数据
import pymysql


db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")

# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()

print("Database version : %s " % data)

# 关闭数据库连接
db.close()

十、查询多条数据

import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

cursor.execute('SELECT * FROM user')

results = cursor.fetchmany(5)
for r in results:
print (r)

十一、查询所有数据

import pymysql

db = pymysql.connect("localhost", "root", "root", "test")
cursor = db.cursor()

cursor.execute('SELECT * FROM user')

results = cursor.fetchall()
for r in results:
print (r)

十二、上下文管理

  • 每次都连接关闭很麻烦,使用上下文管理,简化连接过程
import pymysql
import contextlib

# 定义上下文管理器,连接后自动关闭连接
@contextlib.contextmanager
def mysql(host='127.0.0.1', port=3306, user='root', passwd='', db='test',charset='utf8'):
conn = pymysql.connect(host=host, port=port, user=user, passwd=passwd, db=db, charset=charset)
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
try:
yield cursor
finally:
conn.commit()
cursor.close()
conn.close()

# 执行sql
with mysql() as cursor:
print(cursor)
count = cursor.execute("select * from user")
row_1 = cursor.fetchone()
print row_count, row_1

到此这篇关于python 包 pymysql 数据库操作方法的文章就介绍到这了!

Python 相关文章推荐
使用Python3 编写简单信用卡管理程序
Dec 21 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
flask框架中勾子函数的使用详解
Aug 01 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
linux环境中没有网络怎么下载python
Jul 07 Python
JupyterNotebook设置Python环境的方法步骤
Dec 03 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
python 实现倒计时功能(gui界面)
Nov 11 Python
Python实现列表索引批量删除的5种方法
Nov 16 Python
Python列表元素删除和remove()方法详解
Jan 04 Python
Python中Schedule模块使用详解 周期任务神器
Apr 19 #Python
python中urllib包的网络请求教程
Apr 19 #Python
python APScheduler执行定时任务介绍
Apr 19 #Python
Python数据可视化之Seaborn的安装及使用
python 闭包函数详细介绍
Apr 19 #Python
Python  lambda匿名函数和三元运算符
Apr 19 #Python
Python使用mitmproxy工具监控手机 下载手机小视频
You might like
PHP获取网卡地址的代码
2008/04/09 PHP
php封装的mongodb操作类代码
2017/08/06 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
PHP实现单文件、多个单文件、多文件上传函数的封装示例
2019/09/02 PHP
关于js中alert弹出窗口文本换行问题简单详细说明
2012/12/11 Javascript
JS截取字符串常用方法详细整理
2013/10/28 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
AngularJS入门教程中SQL实例详解
2016/07/27 Javascript
详解js前端代码异常监控
2017/01/11 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
ant-design-vue 实现表格内部字段验证功能
2019/12/16 Javascript
Angular利用HTTP POST下载流文件的步骤记录
2020/07/26 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
[10:07]2014DOTA2国际邀请赛 实拍选手现场观战DK对阵Titan
2014/07/12 DOTA
[01:01:24]LGD vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python 学习笔记
2008/12/27 Python
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
Python中的MongoDB基本操作:连接、查询实例
2015/02/13 Python
Python正则捕获操作示例
2017/08/19 Python
python shell根据ip获取主机名代码示例
2017/11/25 Python
pytorch 常用线性函数详解
2020/01/15 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
回门宴答谢词
2014/01/13 职场文书
党员公开承诺事项
2014/03/25 职场文书
办公室主任四风问题对照检查材料思想汇报
2014/09/28 职场文书
优秀大学生事迹材料
2014/12/24 职场文书
组织委员竞选稿
2015/11/21 职场文书
高一化学教学反思
2016/02/22 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
同学会演讲稿
2019/04/02 职场文书
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库