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.3使用tkinter开发猜数字游戏示例
Mar 14 Python
Python字符串转换成浮点数函数分享
Jul 24 Python
python2.7+selenium2实现淘宝滑块自动认证功能
Feb 24 Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 Python
python数字图像处理实现直方图与均衡化
May 04 Python
Django项目使用CircleCI的方法示例
Jul 14 Python
在python中将list分段并保存为array类型的方法
Jul 15 Python
用Python徒手撸一个股票回测框架搭建【推荐】
Aug 05 Python
自适应线性神经网络Adaline的python实现详解
Sep 30 Python
Pandas实现dataframe和np.array的相互转换
Nov 30 Python
python kafka 多线程消费者&手动提交实例
Dec 21 Python
python有几个版本
Jun 17 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截取中文字符串的问题
2006/07/12 PHP
浅析Apache中RewriteCond规则参数的详细介绍
2013/06/30 PHP
Thinkphp5+plupload实现的图片上传功能示例【支持实时预览】
2019/05/08 PHP
laravel5.6 框架邮件队列database驱动简单demo示例
2020/01/26 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
基于jquery的一个拖拽到指定区域内的效果
2011/09/21 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jQuery简易图片放大特效示例代码
2014/06/09 Javascript
json与jsonp知识小结(推荐)
2016/08/16 Javascript
vue实现百度搜索下拉提示功能实例
2017/06/14 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
JS编写兼容IE6,7,8浏览器无缝自动轮播
2018/10/12 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
[05:26]TI10典藏宝瓶套装外观展示
2020/07/03 DOTA
python中遍历文件的3个方法
2014/09/02 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Django Form and ModelForm的区别与使用
2019/12/06 Python
python import 上级目录的导入
2020/11/03 Python
Python基于template实现字符串替换
2020/11/27 Python
使用CSS3来实现滚动视差效果的教程
2015/08/24 HTML / CSS
美国最顶级的精品店之一:Hampden Clothing
2016/12/22 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
几个数据库方面的面试题
2016/07/01 面试题
上海中网科技笔试题
2012/02/19 面试题
施惠特软件测试面试题以及笔试题
2015/05/13 面试题
竞争上岗演讲稿
2014/01/05 职场文书
师范教师专业大学生职业生涯规划范文
2014/03/02 职场文书
期中考试反思800字
2014/05/01 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
乡镇党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
部队个人年终总结
2015/03/02 职场文书
2016重阳节红领巾广播稿
2015/12/18 职场文书
2016年基层党组织公开承诺书
2016/03/25 职场文书
Python requests库参数提交的注意事项总结
2021/03/29 Python
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript