首页 > Python基础教程 > Python数据库编程
阅读:1,572
Python MySQL数据库执行DML语句
与使用 SQLite 数据库模块类似,MySQL 数据库模块同样可以使用游标的 execute() 方法执行 DML 的 insert、update、delete 语句,对数据库进行插入、修改和删除数据操作。
例如,如下程序示范了向数据库的两个数据表中分别插入一条数据:
与 SQLite 数据库模块类似的是,MySQL 数据库模块同样支持使用 executemany() 方法重复执行一条 SQL 语句。例如如下程序:
使用 MySQL 数据库模块中游标的 executemany() 方法同样可重复执行 update、delete 语句:
例如,如下程序示范了向数据库的两个数据表中分别插入一条数据:
# 导入访问MySQL的模块
import mysql.connector
# ①、连接数据库
conn = conn = mysql.connector.connect(user='root', password='32147',
host='localhost', port='3306',
database='python', use_unicode=True)
# ②、获取游标
c = conn.cursor()
# ③、调用执行insert语句插入数据
c.execute('insert into user_tb values(null, %s, %s, %s)',
('孙悟空', '123456', 'male'))
c.execute('insert into order_tb values(null, %s, %s, %s, %s)',
('鼠标', '34.2', '3', 1))
conn.commit()
# ④、关闭游标
c.close()
# ⑤、关闭连接
conn.close()
上面程序中第 11、13 行代码分别用于向 user_tb 和 order_tb 表中插入数据。注意该程序的 SQL 语句中的占位符:%s,这正如 mysql.connector.paramstyle 属性所标识的 pyformat,它指定在 SQL 语句中使用扩展的格式代码来作为占位符。程序运行完成之后,就会向 python 数据库的两个数据表中各插入一条记录。与 SQLite 数据库模块类似的是,MySQL 数据库模块同样支持使用 executemany() 方法重复执行一条 SQL 语句。例如如下程序:
# 导入访问MySQL的模块
import mysql.connector
# ①、连接数据库
conn = conn = mysql.connector.connect(user='root', password='32147',
host='localhost', port='3306',
database='python', use_unicode=True)
# ②、获取游标
c = conn.cursor()
# ③、调用executemany()方法把同一条SQL语句执行多次
c.executemany('insert into user_tb values(null, %s, %s, %s)',
(('sun', '123456', 'male'),
('bai', '123456', 'female'),
('zhu', '123456', 'male'),
('niu', '123456', 'male'),
('tang', '123456', 'male')))
conn.commit()
# ④、关闭游标
c.close()
# ⑤、关闭连接
conn.close()
该程序与前面使用 SQLite 数据库模块重复执行 SQL 语句的程序基本相同,只是该程序在 SQL 语句中使用了 %s 作为占位符。使用 MySQL 数据库模块中游标的 executemany() 方法同样可重复执行 update、delete 语句:
# 导入访问MySQL的模块
import mysql.connector
# ①、连接数据库
conn = conn = mysql.connector.connect(user='root', password='32147',
host='localhost', port='3306',
database='python', use_unicode=True)
# ②、获取游标
c = conn.cursor()
# ③、调用executemany()方法把同一条SQL语句执行多次
c.executemany('update user_tb set name=%s where user_id=%s',
(('小孙', 2),
('小白', 3),
('小猪', 4),
('小牛', 5),
('小唐', 6)))
# 通过rowcount获取被修改的记录条数
print('修改的记录条数:', c.rowcount)
conn.commit()
# ④、关闭游标
c.close()
# ⑤、关闭连接
conn.close()
需要说明的是,MySQL 数据库模块的连接对象有一个 autoconunit 属性,如果将该属性设为 True,则意味着关闭该连接的事务支持,程序每次执行 DML 语句之后都会自动提交,这样程序就无须调用连接对象的 commit() 方法来提交事务了。例如如下程序:
# 导入访问MySQL的模块
import mysql.connector
# ①、连接数据库
conn = conn = mysql.connector.connect(user='root', password='32147',
host='localhost', port='3306',
database='python', use_unicode=True)
# 将autocommit设置True,关闭事务
conn.autocommit = True
#下面执行的DML语句会自动提交
...
# ④、关闭游标
c.close()
# ⑤、关闭连接
conn.close()
在上面程序中,将连接对象的 autocommit 设为 True,这意味着该连接将会自动提交每条 DML 语句,相当于关闭了事务,所以程序也不需要调用连接对象的 commit() 方法来提交事务。所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频