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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python实现过滤单个Android程序日志脚本分享
Jan 16 Python
用Python创建声明性迷你语言的教程
Apr 13 Python
解决Python传递中文参数的问题
Aug 04 Python
利用python代码写的12306订票代码
Dec 20 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
基于python中的TCP及UDP(详解)
Nov 06 Python
使用python对excle和json互相转换的示例
Oct 23 Python
浅谈pycharm出现卡顿的解决方法
Dec 03 Python
Python求均值,方差,标准差的实例
Jun 29 Python
Django单元测试工具test client使用详解
Aug 02 Python
Python pandas如何向excel添加数据
May 22 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
PHP XML error parsing SOAP payload on line 1
2010/06/17 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
Yii数据库缓存实例分析
2016/03/29 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
pjblog修改技巧汇总
2007/03/12 Javascript
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
jquery实现类似EasyUI的页面布局可改变左右的宽度
2020/09/12 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
jquery动态添加带有样式的HTML标签元素方法
2018/02/24 jQuery
微信小程序踩坑记录之解决tabBar.list[3].selectedIconPath大小超过40kb
2018/07/04 Javascript
基于bootstrap页面渲染的问题解决方法
2018/08/09 Javascript
nodejs微信开发之授权登录+获取用户信息
2019/03/17 NodeJs
自定义javascript验证框架示例【附源码下载】
2019/05/31 Javascript
教你搭建按需加载的Vue组件库(小结)
2019/07/29 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
举例讲解Python中的Null模式与桥接模式编程
2016/02/02 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
python pyenv多版本管理工具的使用
2019/12/23 Python
Python中断多重循环的几种方式详解
2020/02/10 Python
python json 递归打印所有json子节点信息的例子
2020/02/27 Python
CSS3 filter(滤镜)实现网页灰色或者黑色模式的代码
2020/11/30 HTML / CSS
Nordgreen英国官网:斯堪的纳维亚设计师手表
2018/10/24 全球购物
可持续木材、生态和铝制太阳镜:Proof Eyewear
2019/07/24 全球购物
中专生自荐信
2013/10/12 职场文书
大学生实习感言
2014/01/16 职场文书
中国文明网签名寄语
2014/01/18 职场文书
出生公证书样本
2014/04/04 职场文书
《春晓》教学反思
2014/04/20 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
居委会四风问题个人对照检查材料
2014/09/25 职场文书
教你怎么用python实现字符串转日期
2021/05/24 Python