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 相关文章推荐
最基础的Python的socket编程入门教程
Apr 23 Python
Python中生成Epoch的方法
Apr 26 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
Python 多线程Threading初学教程
Aug 22 Python
python实现求两个字符串的最长公共子串方法
Jul 20 Python
在Python中实现shuffle给列表洗牌
Nov 08 Python
python and or用法详解
Jun 26 Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 Python
Python调用ffmpeg开源视频处理库,批量处理视频
Nov 16 Python
python基于pygame实现飞机大作战小游戏
Nov 19 Python
python IP地址转整数
Nov 20 Python
用Python实现Newton插值法
Apr 17 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
php中防止伪造跨站请求的小招式
2011/09/02 PHP
PHP实现将科学计数法转换为原始数字字符串的方法
2014/12/16 PHP
php删除指定目录的方法
2015/04/03 PHP
PHP文件读取功能的应用实例
2015/05/08 PHP
PHP解压ZIP文件到指定文件夹的方法
2016/11/17 PHP
PHP让数组中有相同值的组成新的数组实例
2017/12/31 PHP
PHP给源代码加密的几种方法汇总(推荐)
2018/02/06 PHP
PHP与Perl之间知识点区别整理
2019/03/19 PHP
用Laravel轻松处理千万级数据的方法实现
2020/12/25 PHP
JQuery里面的几种选择器 查找满足条件的元素$("#控件ID")
2011/08/23 Javascript
用js小类库获取浏览器的高度和宽度信息
2012/01/15 Javascript
js 程序执行与顺序实现详解
2013/05/13 Javascript
javascript中expression的用法整理
2014/05/13 Javascript
如何用angularjs制作一个完整的表格
2016/01/21 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
EasyUI Datebox 日期验证之开始日期小于结束时间
2017/05/19 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
vue中component组件的props使用详解
2017/09/04 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
vue实现打地鼠小游戏
2020/08/21 Javascript
解决vue elementUI 使用el-select 时 change事件的触发问题
2020/11/17 Vue.js
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
Python多线程编程(六):可重入锁RLock
2015/04/05 Python
Python实现的插入排序算法原理与用法实例分析
2017/11/22 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
int在python中的含义以及用法
2019/06/27 Python
小组名称和口号
2014/06/09 职场文书
幼儿园小班教师个人工作总结
2015/02/06 职场文书
病人慰问信范文
2015/02/15 职场文书
房地产销售助理岗位职责
2015/04/14 职场文书
2015年学校办公室工作总结
2015/05/26 职场文书
公司酒会致辞
2015/07/30 职场文书
Python使用sql语句对mysql数据库多条件模糊查询的思路详解
2021/04/12 Python
使用Spring处理x-www-form-urlencoded方式
2021/11/02 Java/Android