Python操作MySQL数据库的三种方法总结


Posted in Python onJanuary 30, 2018

1. MySQLdb 的使用

(1) 什么是MySQLdb?

MySQLdb 是用于 Python 连接 MySQL 数据库的接口,它实现了 Python 数据库 API 规范 V2.0,基于 MySQL C API 上建立的。

(2) 源码安装 MySQLdb: https://pypi.python.org/pypi/MySQL-python

$ tar zxvf MySQL-python-*.tar.gz
$ cd MySQL-python-*
$ python setup.py build
$ python setup.py install

(3) MySQLdb 的使用:

#!/usr/bin/env python
# coding=utf-8

import MySQLdb

def connectdb():
 print('连接到mysql服务器...')
 # 打开数据库连接
 # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student
 db = MySQLdb.connect("localhost","hp","Hp12345.","TESTDB")
 print('连接上了!')
 return db

def createtable(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # 如果存在表Sutdent先删除
 cursor.execute("DROP TABLE IF EXISTS Student")
 sql = """CREATE TABLE Student (
   ID CHAR(10) NOT NULL,
   Name CHAR(8),
   Grade INT )"""

 # 创建Sutdent表
 cursor.execute(sql)

def insertdb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 插入语句
 sql = """INSERT INTO Student
   VALUES ('001', 'CZQ', 70),
    ('002', 'LHQ', 80),
    ('003', 'MQ', 90),
    ('004', 'WH', 80),
    ('005', 'HP', 70),
    ('006', 'YF', 66),
    ('007', 'TEST', 100)"""

 #sql = "INSERT INTO Student(ID, Name, Grade) \
 # VALUES ('%s', '%s', '%d')" % \
 # ('001', 'HP', 60)
 try:
  # 执行sql语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
 except:
  # Rollback in case there is any error
  print '插入数据失败!'
  db.rollback()

def querydb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 查询语句
 #sql = "SELECT * FROM Student \
 # WHERE Grade > '%d'" % (80)
 sql = "SELECT * FROM Student"
 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 获取所有记录列表
  results = cursor.fetchall()
  for row in results:
   ID = row[0]
   Name = row[1]
   Grade = row[2]
   # 打印结果
   print "ID: %s, Name: %s, Grade: %d" % \
    (ID, Name, Grade)
 except:
  print "Error: unable to fecth data"

def deletedb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 删除语句
 sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)

 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交修改
  db.commit()
 except:
  print '删除数据失败!'
  # 发生错误时回滚
  db.rollback()

def updatedb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 更新语句
 sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')

 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
 except:
  print '更新数据失败!'
  # 发生错误时回滚
  db.rollback()

def closedb(db):
 db.close()

def main():
 db = connectdb() # 连接MySQL数据库

 createtable(db)  # 创建表
 insertdb(db)  # 插入数据
 print '\n插入数据后:'
 querydb(db) 
 deletedb(db)  # 删除数据
 print '\n删除数据后:'
 querydb(db)
 updatedb(db)  # 更新数据
 print '\n更新数据后:'
 querydb(db)

 closedb(db)   # 关闭数据库

if __name__ == '__main__':
 main()

运行结果:

Python操作MySQL数据库的三种方法总结

2. PyMySQL 的使用

(1) 什么是 PyMySQL?

PyMySQL 是 Python 中用于连接 MySQL 服务器的一个库,它遵循 Python 数据库 API 规范 V2.0,并包含了 pure-Python MySQL 客户端库。

(2) 安装 PyMysql:

pip install PyMysql

(3) 使用 PyMySQL:

#!/usr/bin/env python
# coding=utf-8

import pymysql

def connectdb():
 print('连接到mysql服务器...')
 # 打开数据库连接
 # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student
 db = pymysql.connect("localhost","hp","Hp12345.","TESTDB")
 print('连接上了!')
 return db

def createtable(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # 如果存在表Sutdent先删除
 cursor.execute("DROP TABLE IF EXISTS Student")
 sql = """CREATE TABLE Student (
   ID CHAR(10) NOT NULL,
   Name CHAR(8),
   Grade INT )"""

 # 创建Sutdent表
 cursor.execute(sql)

def insertdb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 插入语句
 sql = """INSERT INTO Student
   VALUES ('001', 'CZQ', 70),
    ('002', 'LHQ', 80),
    ('003', 'MQ', 90),
    ('004', 'WH', 80),
    ('005', 'HP', 70),
    ('006', 'YF', 66),
    ('007', 'TEST', 100)"""

 #sql = "INSERT INTO Student(ID, Name, Grade) \
 # VALUES ('%s', '%s', '%d')" % \
 # ('001', 'HP', 60)
 try:
  # 执行sql语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
 except:
  # Rollback in case there is any error
  print '插入数据失败!'
  db.rollback()

def querydb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 查询语句
 #sql = "SELECT * FROM Student \
 # WHERE Grade > '%d'" % (80)
 sql = "SELECT * FROM Student"
 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 获取所有记录列表
  results = cursor.fetchall()
  for row in results:
   ID = row[0]
   Name = row[1]
   Grade = row[2]
   # 打印结果
   print "ID: %s, Name: %s, Grade: %d" % \
    (ID, Name, Grade)
 except:
  print "Error: unable to fecth data"

def deletedb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 删除语句
 sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)

 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交修改
  db.commit()
 except:
  print '删除数据失败!'
  # 发生错误时回滚
  db.rollback()

def updatedb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 更新语句
 sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')

 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
 except:
  print '更新数据失败!'
  # 发生错误时回滚
  db.rollback()

def closedb(db):
 db.close()

def main():
 db = connectdb() # 连接MySQL数据库

 createtable(db)  # 创建表
 insertdb(db)  # 插入数据
 print '\n插入数据后:'
 querydb(db) 
 deletedb(db)  # 删除数据
 print '\n删除数据后:'
 querydb(db)
 updatedb(db)  # 更新数据
 print '\n更新数据后:'
 querydb(db)

 closedb(db)   # 关闭数据库

if __name__ == '__main__':
 main()

运行结果:

Python操作MySQL数据库的三种方法总结

3. mysql.connector 的使用

(1) 什么是 mysql.connector?

由于 MySQL 服务器以独立的进程运行,并通过网络对外服务,所以,需要支持 Python 的 MySQL 驱动来连接到 MySQL 服务器。

目前,有两个 MySQL 驱动:

mysql-connector-python:是 MySQL 官方的纯 Python 驱动;

MySQL-python :是封装了 MySQL C驱动的 Python 驱动。

(2) 安装 mysql.connector:

pip install mysql-connector-python
pip install MySQL-python

(3) 使用 mysql.connector:

#!/usr/bin/env python
# coding=utf-8

import mysql.connector

def connectdb():
 print('连接到mysql服务器...')
 # 打开数据库连接
 # 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Student
 db = mysql.connector.connect(user="hp", passwd="Hp12345.", database="TESTDB", use_unicode=True)
 print('连接上了!')
 return db

def createtable(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # 如果存在表Sutdent先删除
 cursor.execute("DROP TABLE IF EXISTS Student")
 sql = """CREATE TABLE Student (
   ID CHAR(10) NOT NULL,
   Name CHAR(8),
   Grade INT )"""

 # 创建Sutdent表
 cursor.execute(sql)

def insertdb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 插入语句
 sql = """INSERT INTO Student
   VALUES ('001', 'CZQ', 70),
    ('002', 'LHQ', 80),
    ('003', 'MQ', 90),
    ('004', 'WH', 80),
    ('005', 'HP', 70),
    ('006', 'YF', 66),
    ('007', 'TEST', 100)"""

 #sql = "INSERT INTO Student(ID, Name, Grade) \
 # VALUES ('%s', '%s', '%d')" % \
 # ('001', 'HP', 60)
 try:
  # 执行sql语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
 except:
  # Rollback in case there is any error
  print '插入数据失败!'
  db.rollback()

def querydb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 查询语句
 #sql = "SELECT * FROM Student \
 # WHERE Grade > '%d'" % (80)
 sql = "SELECT * FROM Student"
 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 获取所有记录列表
  results = cursor.fetchall()
  for row in results:
   ID = row[0]
   Name = row[1]
   Grade = row[2]
   # 打印结果
   print "ID: %s, Name: %s, Grade: %d" % \
    (ID, Name, Grade)
 except:
  print "Error: unable to fecth data"

def deletedb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 删除语句
 sql = "DELETE FROM Student WHERE Grade = '%d'" % (100)

 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交修改
  db.commit()
 except:
  print '删除数据失败!'
  # 发生错误时回滚
  db.rollback()

def updatedb(db):
 # 使用cursor()方法获取操作游标 
 cursor = db.cursor()

 # SQL 更新语句
 sql = "UPDATE Student SET Grade = Grade + 3 WHERE ID = '%s'" % ('003')

 try:
  # 执行SQL语句
  cursor.execute(sql)
  # 提交到数据库执行
  db.commit()
 except:
  print '更新数据失败!'
  # 发生错误时回滚
  db.rollback()

def closedb(db):
 db.close()

def main():
 db = connectdb() # 连接MySQL数据库

 createtable(db)  # 创建表
 insertdb(db)  # 插入数据
 print '\n插入数据后:'
 querydb(db) 
 deletedb(db)  # 删除数据
 print '\n删除数据后:'
 querydb(db)
 updatedb(db)  # 更新数据
 print '\n更新数据后:'
 querydb(db)

 closedb(db)   # 关闭数据库

if __name__ == '__main__':
 main()

运行结果:

Python操作MySQL数据库的三种方法总结

以上这篇Python操作MySQL数据库的三种方法总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Windows系统下安装Python的SSH模块教程
Feb 05 Python
在Python中关于中文编码问题的处理建议
Apr 08 Python
自己编程中遇到的Python错误和解决方法汇总整理
Jun 03 Python
对python使用http、https代理的实例讲解
May 07 Python
pandas去除重复列的实现方法
Jan 29 Python
django之自定义软删除Model的方法
Aug 14 Python
解决django中form表单设置action后无法回到原页面的问题
Mar 13 Python
基于SQLAlchemy实现操作MySQL并执行原生sql语句
Jun 10 Python
Python基于Serializer实现字段验证及序列化
Nov 04 Python
Python中Qslider控件实操详解
Feb 20 Python
python - timeit 时间模块
Apr 06 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
python3.5 tkinter实现页面跳转
Jan 30 #Python
python 连接各类主流数据库的实例代码
Jan 30 #Python
python操作oracle的完整教程分享
Jan 30 #Python
Python使用wxPython实现计算器
Jan 30 #Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 #Python
python实现简易版计算器
Jun 22 #Python
python列表的增删改查实例代码
Jan 30 #Python
You might like
windows下PHP APACHE MYSQ完整配置
2007/01/02 PHP
基于jquery实现的服务器验证控件的启用和禁用代码
2010/04/27 Javascript
网页编辑器ckeditor和ckfinder配置步骤分享
2012/05/24 Javascript
JS 数字转换研究总结
2013/12/26 Javascript
JavaScript二维数组实现的省市联动菜单
2014/05/08 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
2015/03/21 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
实例解析js中try、catch、finally的执行规则
2017/02/24 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
JS实现的JSON数组去重算法示例
2018/04/11 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
jquery.pagination.js分页使用教程
2018/10/23 jQuery
一次让你了解全部JavaScript的作用域
2019/06/24 Javascript
layui-tree实现Ajax异步请求后动态添加节点的方法
2019/09/23 Javascript
layui 解决富文本框form表单提交为空的问题
2019/10/26 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
vue项目打包为APP,静态资源正常显示,但API请求不到数据的操作
2020/09/12 Javascript
JavaScript实现简易计算器小功能
2020/10/22 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python基于jieba库进行简单分词及词云功能实现方法
2018/06/16 Python
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
Python可变和不可变、类的私有属性实例分析
2019/05/31 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
Python坐标线性插值应用实现
2019/11/13 Python
tensorflow保持每次训练结果一致的简单实现
2020/02/17 Python
Python3.7将普通图片(png)转换为SVG图片格式(网站logo图标)动起来
2020/04/21 Python
python中openpyxl和xlsxwriter对Excel的操作方法
2021/03/01 Python
工程造价与财务管理专业应届生求职信
2013/10/06 职场文书
生产车间主管岗位职责
2013/12/28 职场文书
致短跑运动员广播稿
2014/01/09 职场文书
单位委托书范本
2014/04/04 职场文书
个人自查自纠材料
2014/10/14 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
小学四年级作文之最感动的一件事
2019/11/01 职场文书