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 相关文章推荐
Python实现的几个常用排序算法实例
Jun 16 Python
跟老齐学Python之Python文档
Oct 10 Python
Python的面向对象思想分析
Jan 14 Python
python通过pil将图片转换成黑白效果的方法
Mar 16 Python
Python类的用法实例浅析
May 27 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
Python实现App自动签到领取积分功能
Sep 29 Python
python 多个参数不为空校验方法
Feb 14 Python
Python Json数据文件操作原理解析
May 09 Python
Python3爬虫关于代理池的维护详解
Jul 30 Python
python之语音识别speech模块
Sep 09 Python
python定时截屏实现
Nov 02 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
yii框架源码分析之创建controller代码
2011/06/28 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
PHP使用SOAP调用.net的WebService数据
2013/11/12 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
浅谈js中调用函数时加不加括号的问题
2016/07/28 Javascript
AngularJS通过ng-route实现基本的路由功能实例详解
2016/12/13 Javascript
js实现符合国情的日期插件详解
2017/01/19 Javascript
AngularJS页面传参的5种方式
2017/04/01 Javascript
JavaScript基础之this详解
2017/06/04 Javascript
jquery鼠标悬停导航下划线滑出效果
2017/09/29 jQuery
浅谈Vue 自动化部署打包上线
2020/06/14 Javascript
基于JavaScript实现猜数字游戏代码实例
2020/07/30 Javascript
[07:08]2014DOTA2西雅图国际邀请赛 小组赛7月11日TOPPLAY
2014/07/11 DOTA
[01:03:54]Liquid vs IG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
[01:19:33]DOTA2-DPC中国联赛 正赛 iG vs VG BO3 第一场 2月2日
2021/03/11 DOTA
Python从MP3文件获取id3的方法
2015/06/15 Python
python爬取cnvd漏洞库信息的实例
2019/02/14 Python
python 通过SSHTunnelForwarder隧道连接redis的方法
2019/02/19 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
什么是python的必选参数
2020/06/21 Python
Django配置Bootstrap, js实现过程详解
2020/10/13 Python
CSS3 border-radius圆角的实现方法及用法详解
2020/09/14 HTML / CSS
Lampenwelt德国:欧洲领先的灯具和照明在线商店
2018/08/05 全球购物
幼儿园教师奖惩制度
2014/02/01 职场文书
竞选班长自荐书范文
2014/03/09 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
2014年预备党员群众路线教育实践活动对照检查材料思想汇报
2014/10/02 职场文书
2014年政风行风自查自纠报告
2014/10/21 职场文书
2015年销售员工作总结范文
2015/04/07 职场文书
完美解决golang go get私有仓库的问题
2021/05/05 Golang
Python 居然可以在 Excel 中画画你知道吗
2022/02/15 Python