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的id()函数介绍
Feb 10 Python
详解Python程序与服务器连接的WSGI接口
Apr 29 Python
Python中编写ORM框架的入门指引
Apr 29 Python
讲解Python中的标识运算符
May 14 Python
python轻松查到删除自己的微信好友
Jan 10 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
Python第三方库face_recognition在windows上的安装过程
May 03 Python
Django 拼接两个queryset 或是两个不可以相加的对象实例
Mar 28 Python
使用keras实现Precise, Recall, F1-socre方式
Jun 15 Python
python+selenium爬取微博热搜存入Mysql的实现方法
Jan 27 Python
Python Django ORM连表正反操作技巧
Jun 13 Python
numpy array找出符合条件的数并赋值的示例代码
Jun 01 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调用Oracle存储过程的方法
2008/09/12 PHP
PHP ajax 分页类代码
2008/11/13 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
php同时使用session和cookie来保存用户登录信息的实现代码
2016/05/13 PHP
php fread读取文件注意事项
2016/09/24 PHP
PHP有序表查找之二分查找(折半查找)算法示例
2018/02/09 PHP
如何阻止复制剪切和粘贴事件为了表单内容的安全
2013/05/23 Javascript
公共js在页面底部加载的注意事项介绍
2013/07/18 Javascript
jquery获取css中的选择器(实例讲解)
2013/12/02 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
AngularJS 入门教程之事件处理器详解
2016/08/19 Javascript
给easyui datebox扩展一个清空的实例
2016/11/09 Javascript
JavaScript字符串对象(string)基本用法示例
2017/01/18 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
使用proxy实现一个更优雅的vue【推荐】
2018/06/19 Javascript
微信小程序下拉框功能的实例代码
2018/11/06 Javascript
bootstrap与pagehelper实现分页效果
2018/12/29 Javascript
JS中的防抖与节流及作用详解
2019/04/01 Javascript
vue-router结合vuex实现用户权限控制功能
2019/11/14 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
[05:24]TI9采访——教练
2019/08/24 DOTA
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
Python实现螺旋矩阵的填充算法示例
2017/12/28 Python
Python中实现switch功能实例解析
2018/01/11 Python
python实现剪切功能
2019/01/23 Python
QML使用Python的函数过程解析
2019/09/26 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
利用python为PostgreSQL的表自动添加分区
2021/01/18 Python
css3中flex布局宽度不生效的解决
2020/12/09 HTML / CSS
使用HTML5里的classList操作CSS类
2016/06/28 HTML / CSS
瑞典Happy Socks美国官网:购买色彩斑斓的快乐袜子
2016/10/19 全球购物
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
幼儿园社区活动总结
2014/07/07 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
世界遗产的导游词
2015/02/13 职场文书