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实现通过文件路径获取文件hash值的方法
Apr 29 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
python自动裁剪图像代码分享
Nov 25 Python
Python3多进程 multiprocessing 模块实例详解
Jun 11 Python
python实时监控cpu小工具
Jun 21 Python
浅谈Python基础—判断和循环
Mar 22 Python
pandas 对日期类型数据的处理方法详解
Aug 08 Python
python数据化运营的重要意义
Nov 25 Python
tensorflow之自定义神经网络层实例
Feb 07 Python
Django 实现 Websocket 广播、点对点发送消息的代码
Jun 03 Python
深入分析python 排序
Aug 24 Python
Python基础详解之邮件处理
Apr 28 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
php 魔术方法详解
2014/11/11 PHP
PHP 正则表达式小结
2015/02/12 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php+redis消息队列实现抢购功能
2018/02/08 PHP
Ajax请求PHP后台接口返回信息的实例代码
2018/08/21 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
js怎么覆盖原有方法实现重写
2014/09/04 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
Bootstrap基本插件学习笔记之折叠(22)
2016/12/08 Javascript
JavaScript在form表单中使用button按钮实现submit提交方法
2017/01/23 Javascript
Vuejs 组件——props数据传递的实例代码
2017/03/07 Javascript
JS实现列表页面隔行变色效果
2017/03/25 Javascript
基于JavaScript实现的插入排序算法分析
2017/04/14 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
Vue 幸运大转盘实现思路详解
2019/05/06 Javascript
独立部署小程序基于nodejs的服务器过程详解
2019/06/24 NodeJs
详解vue v-model
2020/08/31 Javascript
python检测lvs real server状态
2014/01/22 Python
python使用7z解压软件备份文件脚本分享
2014/02/21 Python
python之Socket网络编程详解
2016/09/29 Python
深入理解NumPy简明教程---数组1
2016/12/17 Python
Flask Web开发入门之文件上传(八)
2018/08/17 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
Django-simple-captcha验证码包使用方法详解
2020/11/28 Python
Mixbook加拿大:照片书,照片卡,剪贴簿,年历和日历
2017/02/21 全球购物
俄罗斯鲜花递送:AMF
2020/04/24 全球购物
全球性的众包图形设计市场:DesignCrowd
2021/02/02 全球购物
《自然之道》教学反思
2014/02/11 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
python第三方网页解析器 lxml 扩展库与 xpath 的使用方法
2021/04/06 Python