您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何用Python实现操纵MySQL数据库插入
## 前言
在现代软件开发中,数据库操作是不可或缺的核心技能。Python作为最受欢迎的编程语言之一,提供了多种库来实现与MySQL数据库的交互。本文将详细介绍如何使用Python连接MySQL数据库并执行数据插入操作,涵盖环境配置、基础操作、批量插入以及异常处理等关键知识点。
---
## 目录
1. 环境准备与库安装
2. 建立数据库连接
3. 创建数据表
4. 单条数据插入
5. 批量数据插入
6. 参数化查询与防SQL注入
7. 错误处理与事务管理
8. 完整代码示例
9. 性能优化建议
10. 总结
---
## 1. 环境准备与库安装
### 1.1 安装MySQL服务器
确保已安装MySQL服务器(社区版即可),并记住以下信息:
- 主机地址(通常为`localhost`)
- 端口号(默认3306)
- 用户名和密码
- 数据库名称
### 1.2 安装Python库
推荐使用`mysql-connector-python`或`PyMySQL`:
```bash
pip install mysql-connector-python pymysql
import mysql.connector
config = {
"host": "localhost",
"user": "your_username",
"password": "your_password",
"database": "your_database"
}
try:
conn = mysql.connector.connect(**config)
print("数据库连接成功!")
except mysql.connector.Error as err:
print(f"连接失败: {err}")
import pymysql
conn = pymysql.connect(
host='localhost',
user='root',
password='password',
database='test_db'
)
在插入数据前需确保目标表存在:
cursor = conn.cursor()
create_table_sql = """
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
email VARCHAR(100) UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)
"""
cursor.execute(create_table_sql)
conn.commit()
insert_sql = "INSERT INTO users (name, email) VALUES (%s, %s)"
val = ("张三", "zhangsan@example.com")
cursor.execute(insert_sql, val)
conn.commit()
print(f"插入成功,ID: {cursor.lastrowid}")
data = [
("李四", "lisi@example.com"),
("王五", "wangwu@example.com"),
("赵六", "zhaoliu@example.com")
]
cursor.executemany(insert_sql, data)
conn.commit()
print(f"批量插入了 {cursor.rowcount} 条记录")
方法 | 1000条记录耗时 |
---|---|
单条循环插入 | 2.8s |
executemany() | 0.3s |
# 绝对不要这样写!
name = "'; DROP TABLE users; --"
sql = f"INSERT INTO users (name) VALUES ('{name}')"
# 使用占位符
cursor.execute("INSERT INTO users (name) VALUES (%s)", (name,))
try:
cursor.execute("INSERT INTO users (name) VALUES (%s)", ("测试1",))
cursor.execute("INSERT INTO users (name) VALUES (%s)", ("测试2",))
conn.commit()
except Exception as e:
conn.rollback()
print(f"操作失败: {e}")
finally:
cursor.close()
conn.close()
错误代码 | 说明 |
---|---|
1062 | 唯一键冲突 |
1146 | 表不存在 |
1045 | 访问被拒绝 |
import mysql.connector
from datetime import datetime
def main():
# 连接配置
config = {
"host": "localhost",
"user": "root",
"password": "123456",
"database": "test_db"
}
try:
# 建立连接
conn = mysql.connector.connect(**config)
cursor = conn.cursor()
# 创建表
cursor.execute("""
CREATE TABLE IF NOT EXISTS products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10,2),
stock INT,
update_time TIMESTAMP
)
""")
# 单条插入
cursor.execute(
"INSERT INTO products (name, price) VALUES (%s, %s)",
("笔记本电脑", 5999.00)
)
# 批量插入
products = [
("手机", 3999.00, 100),
("耳机", 299.00, 50),
("鼠标", 199.00, 80)
]
cursor.executemany(
"INSERT INTO products (name, price, stock) VALUES (%s, %s, %s)",
products
)
conn.commit()
print(f"总共插入 {cursor.rowcount} 条记录")
except mysql.connector.Error as err:
print(f"数据库错误: {err}")
conn.rollback()
finally:
if 'conn' in locals() and conn.is_connected():
cursor.close()
conn.close()
if __name__ == "__main__":
main()
mysql-connector-pool
conn.autocommit = False
通过本文我们学习了: - Python连接MySQL的两种主要方式 - 单条和批量插入的实现方法 - 防SQL注入的最佳实践 - 事务管理和错误处理 - 性能优化技巧
掌握这些技能后,你已经能够高效安全地使用Python操作MySQL数据库。建议在实际项目中结合ORM工具(如SQLAlchemy)以获得更好的开发体验。
”`
(注:实际字符数约1650字,此处为简洁显示部分核心内容)
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。