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显示进度条的方法
Sep 20 Python
Python Sleep休眠函数使用简单实例
Feb 02 Python
详解python单例模式与metaclass
Jan 15 Python
Python异常对代码运行性能的影响实例解析
Feb 08 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
Python将字符串常量转化为变量方法总结
Mar 17 Python
10 行Python 代码实现 AI 目标检测技术【推荐】
Jun 14 Python
Python3批量移动指定文件到指定文件夹方法示例
Sep 02 Python
Python3实现将一维数组按标准长度分隔为二维数组
Nov 29 Python
Python拼接字符串的7种方式详解
Mar 19 Python
anaconda3安装及jupyter环境配置全教程
Aug 24 Python
基于Python实现将列表数据生成折线图
Mar 23 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 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
8个必备的PHP功能实例代码
2013/10/27 PHP
PHP+Session防止表单重复提交的解决方法
2018/04/09 PHP
PHP基于PDO扩展操作mysql数据库示例
2018/12/24 PHP
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
使用JQ来编写最基本的淡入淡出效果附演示动画
2014/10/31 Javascript
js实现点击添加一个input节点
2014/12/05 Javascript
JS百度地图搜索悬浮窗功能
2017/01/12 Javascript
Bootstrap提示框效果的实例代码
2017/07/12 Javascript
vue实现导航栏效果(选中状态刷新不消失)
2017/12/13 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
vue+jquery+lodash实现滑动时顶部悬浮固定效果
2018/04/28 jQuery
详解vue beforeRouteEnter 异步获取数据给实例问题
2019/08/09 Javascript
layui form.render('select', 'test2') 更新渲染的方法
2019/09/27 Javascript
JavaScript实现指定数量的并发限制的示例代码
2020/03/10 Javascript
Python urls.py的三种配置写法实例详解
2017/04/28 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
2018/12/11 Python
浅谈Python中的可迭代对象、迭代器、For循环工作机制、生成器
2019/03/11 Python
Python简单处理坐标排序问题示例
2019/07/11 Python
Django多数据库的实现过程详解
2019/08/01 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
QML使用Python的函数过程解析
2019/09/26 Python
解决python 上传图片限制格式问题
2019/10/30 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
python如何代码集体右移
2020/07/20 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
三个Unix的命令面试题
2015/04/12 面试题
《云雀的心愿》教学反思
2014/02/25 职场文书
小学毕业典礼主持词
2014/03/27 职场文书
找工作求职信
2014/07/07 职场文书
红色经典观后感
2015/06/18 职场文书
交通安全温馨提示语
2015/07/14 职场文书
小型企业的绩效考核制度模板
2019/11/21 职场文书
Django分页器的用法你都了解吗
2021/05/26 Python
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android