1. PyMySQL 的使用

(1) 什么是 PyMySQL?

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

(2) 安装 PyMysql:

pip install PyMysql

(3) 参数说明:

pymysql.Connect()参数说明
host(str):      MySQL服务器地址
port(int):      MySQL服务器端口号
user(str):      用户名
passwd(str):    密码
db(str):        数据库名称
charset(str):   连接编码connection对象支持的方法
cursor()        使用该连接创建并返回游标
commit()        提交当前事务
rollback()      回滚当前事务
close()         关闭连接cursor对象支持的方法
execute(op)     执行一个数据库的查询命令
fetchone()      取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall()      获取结果集中的所有行
rowcount()      返回数据条数或影响行数
close()         关闭游标对象

(4) 使用 PyMySQL:

#!/usr/bin/env python
# coding=utf-8import pymysqldef connectdb():print('连接到mysql服务器...')# 打开数据库连接# 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Studentdb = pymysql.connect("localhost","hp","Hp12345.","TESTDB")print('连接上了!')return dbdef 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 StudentVALUES ('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 errorprint '插入数据失败!'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()

运行结果:

实例2:

import pymysql.cursors# 连接数据库
connect = pymysql.connect(host='localhost',port=3310,user='woider',passwd='3243',db='python',charset='utf8'
)# 获取游标
cursor = connect.cursor()# 插入数据
sql = "INSERT INTO trade (name, account, saving) VALUES ( '%s', '%s', %.2f )"
data = ('雷军', '13512345678', 10000)
cursor.execute(sql % data)
connect.commit()
print('成功插入', cursor.rowcount, '条数据')# 修改数据
sql = "UPDATE trade SET saving = %.2f WHERE account = '%s' "
data = (8888, '13512345678')
cursor.execute(sql % data)
connect.commit()
print('成功修改', cursor.rowcount, '条数据')# 查询数据
sql = "SELECT name,saving FROM trade WHERE account = '%s' "
data = ('13512345678',)
cursor.execute(sql % data)
for row in cursor.fetchall():print("Name:%s\tSaving:%.2f" % row)
print('共查找出', cursor.rowcount, '条数据')# 删除数据
sql = "DELETE FROM trade WHERE account = '%s' LIMIT %d"
data = ('13512345678', 1)
cursor.execute(sql % data)
connect.commit()
print('成功删除', cursor.rowcount, '条数据')# 事务处理
sql_1 = "UPDATE trade SET saving = saving + 1000 WHERE account = '18012345678' "
sql_2 = "UPDATE trade SET expend = expend + 1000 WHERE account = '18012345678' "
sql_3 = "UPDATE trade SET income = income + 2000 WHERE account = '18012345678' "try:cursor.execute(sql_1)  # 储蓄增加1000cursor.execute(sql_2)  # 支出增加1000cursor.execute(sql_3)  # 收入增加2000
except Exception as e:connect.rollback()  # 事务回滚print('事务处理失败', e)
else:connect.commit()  # 事务提交print('事务处理成功', cursor.rowcount)# 关闭连接
cursor.close()
connect.close()

2. 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-8import mysql.connectordef connectdb():print('连接到mysql服务器...')# 打开数据库连接# 用户名:hp, 密码:Hp12345.,用户名和密码需要改成你自己的mysql用户名和密码,并且要创建数据库TESTDB,并在TESTDB数据库中创建好表Studentdb = mysql.connector.connect(user="hp", passwd="Hp12345.", database="TESTDB", use_unicode=True)print('连接上了!')return dbdef 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 StudentVALUES ('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 errorprint '插入数据失败!'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()

运行结果:

python3 操作mysql数据库(mysql.connector 和 pymysql )相关推荐

  1. 微信小程序云函数操作云数据库Mysql

    微信小程序云函数操作云数据库Mysql 参考一 参考二 云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写.一键上传部署即可运行后端代码. 小程序内提供了专门用于云函数调用的 API.开发 ...

  2. 视频教程-必会神器之MySQL数据库-MySQL

    必会神器之MySQL数据库 精通Python.PHP.MySQL.MongoDB.Redis.HTML.CSS.JavaScript和jQuery等 因为心中一直怀揣教育梦 所以毅然决然从开发一线转到 ...

  3. 【MySQL】黑马教程MySQL数据库 MySQL基础(一)

    文章目录 [MySQL]黑马教程MySQL数据库 | MySQL基础(一) MySQL启动 MySQL客户端连接 MySQL数据模型 SQL SQL分类 DDL 表操作-查询 表操作-创建 表操作-数 ...

  4. Python3操作MongoDB数据库

    Python3操作MongoDB数据库 文章目录 Python3操作MongoDB数据库 0. 写在前面 1. 安装开源驱动库pymongo 2. 参考 0. 写在前面 Linux:Ubuntu Ky ...

  5. 漏洞扫描处理:凝思6.0.80操作系统安装数据库Mysql 8.0.27(二进制安装包安装)

    因网络安全测试,漏洞扫描检测出原先的Mysql5.7.XX数据库存在漏洞等等问题,需要升级Mysql最新版本的数据库,现记录如下升级步骤: 1.首先登录Mysql官网MySQL,选择DOWNLOADS ...

  6. 01 MySQL数据库 MySQL入门

    01 MySQL数据库 从今天开始,我们将进入系列课程的 第四模块 的学习,这个模块就是给大家讲解MySQL数据库. 以前,在开发程序时,我们会把很多的数据和信息存储到某个文件夹中的文件中,例如:us ...

  7. MySQL数据库——MySQL INSERT:插入数据(添加数据)

    数据库与表创建成功以后,需要向数据库的表中插入数据.在 MySQL 中可以使用 INSERT 语句向数据库已有的表中插入一行或者多行元组数据. 基本语法 INSERT 语句有两种语法形式,分别是 IN ...

  8. MySQL数据库——MySQL查看存储过程

    创建好存储过程后,用户可以通过 SHOW ATATUS 语句来查看存储过程的状态,也可以通过 SHOW CREATE 语句来查看存储过程的定义.这里主要讲解查看存储过程的状态和定义的方法. 查看存储过 ...

  9. Mac安装mysql数据库MySQL基础和MySQL在开发中常用的技术

    一.安装步骤 打开终端,输入: sudo vi ~/.bash_profile 输入 i 然后粘贴以下内容 # mysql alias mysql='/usr/local/mysql/bin/mysq ...

  10. MySQL数据库——MySQL字符集和校对规则详解

    在讲解字符集和校对规则之前,我们先来简单了解一下字符.字符集和字符编码. 字符(Character)是计算机中字母.数字.符号的统称,一个字符可以是一个中文汉字.一个英文字母.一个阿拉伯数字.一个标点 ...

最新文章

  1. 使用 PHP 在站点上构建类似 Twitter 的系统
  2. 40 万年薪招应届生?OPPO 狂揽芯片人才,应届生招聘行情究竟如何?
  3. 使用xshell5 从CentOS主机download资料
  4. 从零实现 SpringBoot 简易读写分离,也不难嘛!
  5. php.ini 米拓_图片无法上传问题“大集结”-米拓建站帮助中心
  6. java实现压缩图片的方法
  7. UUID 正在被 NanoID 取代?
  8. bzoj 1095 捉迷藏
  9. Centos6.5不支持ip nets命令
  10. windows通信端口初始化失败_STM32实例——USART串口通信实验(二)
  11. 《白帽子讲web安全》学习笔记——web安全概述
  12. 计算机表格常用公式,十个办公常用的最基本的Excel函数
  13. 前端页面 div+css内容太长,实现点击展开余下全文(修改版)
  14. 上海牌照(沪牌)拍牌,软件,手动
  15. android re卸载程序,手机自带软件卸载不了?教你2种方法,强制卸载预装应用程序!...
  16. 史上最难英语单词——as的七十二变【猴精】
  17. 图片验证码、阿里云短信发送和验证的逻辑
  18. java excel 设置列为日期,POI - 如何将单元格值设置为日期并应用默认Excel日期格式?...
  19. 有苦有乐的算法 --- 图的深度优先遍历
  20. 【RED-V】开发环境搭建及快速入门

热门文章

  1. 4G 信令中的 PCO 字段
  2. 用 Flask 来写个轻博客 (19) — 以 Bcrypt 密文存储账户信息与实现用户登陆表单
  3. Linux_正则表达式
  4. IBatis.Net学习笔记六--再谈查询
  5. Java中ThreadPoolExecutor的参数理解
  6. 开源数据库该怎么玩?
  7. smokeping安装部署最佳实践
  8. 下载编译网站生成chm
  9. 关于matlab中的梯度使用
  10. SQLServer性能优化一则小实例(2010-07-21)