本文实例讲述了python操作MySQL数据库。分享给大家供大家参考,具体如下:

1、安装

通过Python连接MySQL数据库有很多库,这里使用官方推荐的MySQL Connector/Python库,其官网为:https://dev.mysql.com/doc/connector-python/en/。

通过pip命令安装: pip install mysql-connector-python

默认安装的是最新的版本,我安装的是8.0.17,对应MySQL的8.0版本。MySQL统一了其相关工具的大版本号,必须相同或更高才可以兼容。例如我使用的是MySQL8.0,如果使用低于8的mysql-connector就会报错。事实上也是这样,在某些旧的文档中提示安装pip install mysql-connector,就会安装较低的版本,在连接MySQL时,会报错如下:

mysql.connector.errors.NotSupportedError: Authentication plugin 'caching_sha2_password' is not supported

这是由于mysql8.0使用了Use Strong Password Encryption for Authentication即强密码加密,而低版本的mysql-connector采用旧的mysql_native_password加密方式,导致无法连接,因此注意使用和数据库相兼容的版本。

2、连接

可以通过connector类的connect()方法进行数据库的连接,传入服务器、端口号、用户名、密码、数据库等参数,其中服务器与端口号可省略,默认为localhost:3306。 import mysql.connector

db = mysql.connector.connect(

host='localhost',

port='3306',

user="root",

password="123456",

database="test"

)

3、数据库、表操作

对数据库、数据表的操作属于模式定义语言(DDL),所有DDL语句的执行都是依赖于一个叫cursor的数据结构进行操作的。通过从connect对象中获取cursor对象后就可以进行数据库、表的相关操作了。例如创建一个数据库、数据表 # 获取数据库的cursor

cursor = db.cursor()

# 创建数据库

cursor.execute("CREATE DATABASE mydatabase")

# 创建数据表

dbcursor.execute("CREATE TABLE customers (name varchar(255),address varchar(255))")

# 修改表操作

dbcursor.execute('ALTER TABLE customers ADD COLUMN id INT PRIMARY KEY AUTO_INCREMENT')

# 查询并打印数据库中的所有表

cursor.execute("show tables")

for table in cursor:

print(table)

4、增删改

插入、删除、修改操作依旧是通过cursor对象来实现,通过cursor的execute()方法执行SQL操作,第一个参数是要执行的SQL语句,第二个参数是语句中要填充的变量。

在执行完所有的SQL操作后记得要通过数据库对象的commit()将操作事务提交到数据库,如果需要撤销则通过rollback()方法回滚操作。

SQL语句中的变量可以用%s的形式作为占位符,然后再以python中元组的形式在执行时将变量填入,如下所示:

值得注意的是无论是什么类型的数据在传入时都被当做字符串类型,然后在执行SQL操作时会将字符串转化为相应的类型,因此此处的占位符都是%s,而没有%d、%f等。 # 要执行的SQL语句

sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

# 以元组的形式填入数据

val = ('Mike', 'Main street 20')

# 执行操作

cursor.execute(sql, val)

# 提交事务

db.commit()

也可以用python中字典的形式填充变量,在SQL语句中的占位符需要使用对应的变量名 # 在SQL语句中指明变量名

sql = "INSERT INTO customers (name, address) VALUES (%(name)s, %(address)s)"

# 以字典的形式填入数据

val = {

'name': 'Alice',

'address': 'Center street 22'

}

cursor.execute(sql, val)

如果需要一次插入多条数据,可以使用executemany()方法,将多条数据以数组的方式传给第二个参数。

通过cursor的rowcount属性可以返回成功操作的数据条数,lastrowid属性是最后一个成功插入的行的id sql = "INSERT INTO customers (name, address) VALUES (%s, %s)"

# 以数组的形式填充数据

val = [

('Peter', 'Lowstreet 4'),

('Amy', 'Apple st 652'),

('Hannah', 'Mountain 21'),

]

cursor.executemany(sql, val)

print("成功插入%d条数据,最后一条的id为:%d" % (cursor.rowcount, cursor.lastrowid))

修改、删除数据的方法与插入类似,只需要把对应的SQL语句和变量值传给execute()函数即可。可以看出MySQL-connector库的操作是非常贴近原生SQL语言的。 # 修改数据

sql = "UPDATE customers SET address=%s WHERE name=%s"

val = ('Center street 21', 'Mike')

cursor.execute(sql, val)

# 删除数据

sql = "DELETE FROM customers WHERE name=%s"

val = ('Hannah',)

cursor.execute(sql, val)

5、查询

执行查询操作和之前类似,都是通过execute()执行对应的SQL语句,在执行时将相应的数据填入即可。查询结束后,结果集会保存在cursor当中,可以直接把cursor当作迭代器iterator来进行展开取得结果集中每条数据的对应字段。也可以通过cursor的fetchall()、fetchone()方法取得所有或一条结果集。 # 查询customers表中id介于6到8之间的数据并返回name、address字段

query = "SELECT name,address FROM customers WHERE id BETWEEN %s AND %s"

cursor.execute(query, (6, 8))

# 循环取出结果集中的每条数据并打印

for (name, address) in cursor:

print("%s家的地址是%s" % (name, address))

# 输出结果为:

# Peter家的地址是Lowstreet 4

# Amy家的地址是Apple st 652

# Hannah家的地址是Mountain 21

通过原生的SQL语句可以进行更为复杂的查询操作,例如通过where设置查询条件、Order by进行字段排序、Limit设置返回结果条数、OFFSET查询结果集的偏移、Join进行表连接操作

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python常见数据库操作技巧汇总》、《Python数学运算技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

wps连接mysql数据库增删改查_Python操作MySQL数据库实例详解【安装、连接、增删改查等】...相关推荐

  1. mysql 创建删除表_mysql创建删除表的实例详解

    表的创建命令需要: 表的名称 字段名称 定义每个字段(类型.长度等) 语法 下面是通用的SQL语法用来创建MySQL表: CREATE TABLE table_name (column_name ...

  2. mysql查询性能测试工具_MySQL性能测试工具MySQLslap使用实例详解

    原标题:MySQL性能测试工具MySQLslap使用实例详解 MySQLslap是MySQL(了解干货请戳:干货!超过500行的Mysql学习笔记)自带的基准测试工具,优点:查询数据,语法简单,灵活容 ...

  3. mysql shutdown 命令_Mysql 5.7.9 shutdown 语法实例详解

    mysql-5.7.9 终于提供shutdown 语法啦: 之前如果想关闭一个mysql数据库可以通过kill 命令.mysqladmin shutdown .service mysqld stop ...

  4. python对sqlite增删改查_Python操作sqlite3数据库 增删改查

    SQLite,是一款轻型的数据库,占用资源非常的低.这里记录下对sqlite3的增删改查相关操作,顺便复习一下SQL语句- -. 一.创建数据库 连接到一个现有的数据库.如果数据库不存在,那么它就会被 ...

  5. python对sqlite增删改查_Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】...

    本文实例讲述了python操作SQLite数据库的方法.分享给大家供大家参考,具体如下: SQLite简介 SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的 ...

  6. mac上mysql关闭不了了_python操作mysql数据库

    Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口. Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库: ...

  7. mysql 排序后 下一条记录_什么是MySQL InnoDB 二级索引的排序?|附实例详解

    概述 今天主要给大家介绍了关于MySQL InnoDB 二级索引的排序的相关资料,通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值. 每个InnoDB表具有一个特殊的索引称为聚簇 ...

  8. python基础数据实例_Python基本数据类型及实例详解

    Python 中的变量不需要声明.每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建. 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对 ...

  9. python爬虫框架scrapy实例详解_python爬虫框架scrapy实例详解

    生成项目 scrapy提供一个工具来生成项目,生成的项目中预置了一些文件,用户需要在这些文件中添加自己的代码. 打开命令行,执行:scrapy startproject tutorial,生成的项目类 ...

最新文章

  1. c# 使用TCP连接(server)
  2. Spring Cloud Alibaba - 04 Nacos 领域模型划分
  3. javaweb 登陆注册页面
  4. looper message handler之间的关系
  5. 探究Softmax的替代品:exp(x)的偶次泰勒展开式总是正的
  6. 解决myeclipse报错500,MySQLyog报错误码问题
  7. 计算机计算exp函数原理,exp()函数的数值计算中的系数
  8. linux基础服务,Linux基础
  9. python傅里叶变换库_python的numpy库和cv2库实现图像傅里叶变换
  10. Laya的位图字体bitmapFont字体用法
  11. 计算机关机后自行启动,Win7官方旗舰版系统电脑关机后自动开机的解决办法
  12. 大脑的扩散磁共振成像(Diffusion MRI)—理论和概念
  13. 3DGIS合伙人招募
  14. 高等数学:微分、积分物理以及几何意义
  15. 为 iOS 建立 Travis CI
  16. 第79句 How Silicon Valley Puts the ‘Con’ in Consent硅谷的许可骗术
  17. 如何学好c++,还是好好看书籍吧!
  18. 自动化失败的6种原因
  19. 任意模数NTT(学习笔记)
  20. USB是如何诞生的?

热门文章

  1. JAVA斗地主发牌简写
  2. 少女前线一直提示服务器维护,少女前线进不去黑屏怎么办 闪退解决方法
  3. wxpython 之 GDI(一)
  4. fdfs启动storage失败解决办法
  5. LVGL8学习之Shadow Styles
  6. html在qq怎么全屏显示,QQ怎么设置全屏资料背景
  7. 方舟生存进化自建服务器要多少成本?
  8. 2020CCPC绵阳站后记
  9. 【KD】Correlation Congruence for Knowledge Distillation
  10. C语言-return的作用总结