1. Python插入数据库
在Python中,我们可以使用各种数据库模块来插入数据到数据库中,如MySQLdb、psycopg2、pymssql等。这些模块提供了一系列函数和方法,用于连接数据库、执行SQL语句和获取执行结果。
1.1 使用MySQLdb插入数据
MySQLdb是Python中用于连接MySQL数据库的一个常用模块,可以通过pip进行安装。
import MySQLdb
# 连接数据库
db = MySQLdb.connect(host="localhost", user="root", passwd="password", db="mydb")
# 创建游标对象
cursor = db.cursor()
# 定义插入SQL语句
sql = "INSERT INTO students (name, age, grade) VALUES ('Tom', 18, 'A')"
try:
# 执行SQL语句
cursor.execute(sql)
# 提交事务
db.commit()
print("插入成功")
except Exception as e:
# 发生错误时回滚
db.rollback()
print("插入失败:", str(e))
finally:
# 关闭数据库连接
db.close()
上述代码示例中,首先使用MySQLdb的connect函数连接到MySQL数据库。然后创建一个游标对象,可以通过游标对象执行SQL语句。接下来定义插入的SQL语句,然后使用execute方法执行SQL语句。如果执行成功,使用commit方法提交事务,否则使用rollback方法回滚。最后关闭数据库连接。
1.2 使用psycopg2插入数据
psycopg2是Python中用于连接PostgreSQL数据库的一个常用模块,可以通过pip进行安装。
import psycopg2
# 连接数据库
conn = psycopg2.connect(database="mydb", user="postgres", password="password", host="localhost", port="5432")
# 创建游标对象
cur = conn.cursor()
# 定义插入SQL语句
sql = "INSERT INTO students (name, age, grade) VALUES ('Tom', 18, 'A')"
try:
# 执行SQL语句
cur.execute(sql)
# 提交事务
conn.commit()
print("插入成功")
except Exception as e:
# 发生错误时回滚
conn.rollback()
print("插入失败:", str(e))
finally:
# 关闭数据库连接
conn.close()
与使用MySQLdb插入数据类似,使用psycopg2模块也需要先连接到数据库,然后创建游标对象,再定义插入的SQL语句,最后执行SQL语句并提交事务。
1.3 使用pymssql插入数据
pymssql是Python中用于连接Microsoft SQL Server数据库的一个常用模块,可以通过pip进行安装。
import pymssql
# 连接数据库
conn = pymssql.connect(host='localhost', user='sa', password='password', database='mydb')
# 创建游标对象
cursor = conn.cursor()
# 定义插入SQL语句
sql = "INSERT INTO students (name, age, grade) VALUES ('Tom', 18, 'A')"
try:
# 执行SQL语句
cursor.execute(sql)
# 提交事务
conn.commit()
print("插入成功")
except Exception as e:
# 发生错误时回滚
conn.rollback()
print("插入失败:", str(e))
finally:
# 关闭数据库连接
conn.close()
使用pymssql插入数据与使用其他模块类似,首先连接到数据库,然后创建游标对象,定义插入的SQL语句,执行SQL语句并提交事务。
2. 生成插入SQL语句
如果要批量插入数据,可以使用Python来生成插入SQL语句,并执行插入操作。
import random
names = ["Alice", "Bob", "Charlie"]
ages = [20, 21, 22]
grades = ["A", "B", "C"]
# 生成插入SQL语句
sql = "INSERT INTO students (name, age, grade) VALUES "
for i in range(10):
name = random.choice(names)
age = random.choice(ages)
grade = random.choice(grades)
sql += f"('{name}', {age}, '{grade}'),"
# 去除最后一个逗号
sql = sql[:-1]
print(sql)
上述代码示例中,我们通过列表定义了姓名、年龄和成绩的可能取值,然后使用random模块来随机选择这些取值。接着使用循环生成多个插入数据的字符串,最后使用字符串拼接将这些字符串合并成一个完整的插入SQL语句。我们可以通过打印出来的sql变量来验证生成的SQL语句是否正确。
生成插入SQL语句后,我们可以再次使用之前介绍的数据库模块来执行插入操作。
总结来说,Python可以通过各种数据库模块来插入数据到数据库中,通过连接数据库、创建游标对象、执行SQL语句和提交事务等操作。对于批量插入数据,可以使用Python来生成插入SQL语句并执行插入操作。