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获取apk文件URL地址实例
Nov 01 Python
Python使用新浪微博API发送微博的例子
Apr 10 Python
为Python的web框架编写MVC配置来使其运行的教程
Apr 30 Python
Python计算一个文件里字数的方法
Jun 15 Python
python购物车程序简单代码
Apr 18 Python
Python常见内置高效率函数用法示例
Jul 31 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
Python3标准库之dbm UNIX键-值数据库问题
Mar 24 Python
浅谈Python协程
Jun 17 Python
python中random模块详解
Mar 01 Python
使用python创建股票的时间序列可视化分析
Mar 03 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入门速成(2)
2006/10/09 PHP
深入理解用mysql_fetch_row()以数组的形式返回查询结果
2013/06/05 PHP
国外十大最流行的PHP框架排名
2013/07/04 PHP
php常用字符函数实例小结
2016/12/29 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
农历与西历对照
2006/09/06 Javascript
简单实例处理url特殊符号&处理(2种方法)
2013/04/02 Javascript
js实现使用鼠标拖拽切换图片的方法
2015/05/04 Javascript
javascript中Array()数组函数详解
2015/08/23 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
轻松实现jquery选项卡切换效果
2016/10/10 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
jquery 获取索引值在一定范围的列表方法
2018/01/25 jQuery
jquery实现搜索框功能实例详解
2018/07/23 jQuery
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
Vue中插入HTML代码的方法
2018/09/21 Javascript
vue通过video.js解决m3u8视频播放格式的方法
2019/07/30 Javascript
vue 动态生成拓扑图的示例
2021/01/03 Vue.js
Python脚本暴力破解栅栏密码
2015/10/19 Python
Python的Flask框架的简介和安装方法
2015/11/13 Python
python3读取MySQL-Front的MYSQL密码
2017/05/03 Python
Python微信公众号开发平台
2018/01/25 Python
Python 脚本获取ES 存储容量的实例
2018/12/27 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
html5画布旋转效果示例
2014/01/27 HTML / CSS
error和exception有什么区别
2012/10/02 面试题
超市创业计划书
2014/09/15 职场文书
学生逃课检讨书
2015/02/17 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
Python集合的基础操作
2021/11/01 Python
解决vue-router的beforeRouteUpdate不能触发
2022/04/14 Vue.js