#Example11.1 建立数据库连接 import pymysql #创建数据库连接 conn = pymysql.connect( host="localhost", #要连接的数据库所在的主机ip user="root", #登录用户名 password="159271", #登录密码 database="student_db" #连接的数据库名 ) cursor = conn.cursor() #创建student_info数据表 sql = """CREATE TABLE `student_info` ( `id` int NOT NULL AUTO_INCREMENT, `学号` int NOT NULL, `姓名` varchar(20) NOT NULL, `性别` varchar(20) NOT NULL, `年龄` int NOT NULL, `班级` varchar(20) NOT NULL, `专业` varchar(20) NOT NULL, `备注` varchar(20) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8mb3""" 调用cursor的execute()方法执行上述sql语句,创建student_info表 cursor.execute(sql) Example11.5 使用executemany()插入多条记录,使用推导式 id = [4, 5, 6] num = [2208204, 2208205, 2208206] name = ['宋涛','陈启','刘颖'] gender = ['男','男','女'] age = [18, 17, 19] classes = ['大数据202','大数据201','软件202'] major = ['大数据','大数据','软件工程'] memo = ['团支书','Bdjw',''] sql = 'insert into student_info values(%s,%s,%s,%s,%s,%s,%s,%s)' insert_items = [(id[i], num[i], name[i], gender[i], age[i], classes[i],major[i],memo[i]) for i in range(0, len(id))] with conn.cursor() as cursor: try: insert = cursor.executemany(sql,insert_items) conn.commit() # 提交数据库执行 print("insert_many = ", insert) except Exception as e: conn.rollback() # 出现异常,撤回操作 print(e.args) # 显示
解析:
- 定义了多个列表,分别存储学生的
id
、学号
、姓名
、性别
、年龄
、班级
、专业
和备注
信息。 - 使用列表推导式生成一个包含所有学生信息的元组列表
insert_items
。 - 使用
cursor.executemany(sql, insert_items)
方法插入多条记录。 - 使用
try...except
块来捕获并处理可能的异常,确保在出现错误时回滚事务并显示异常信息。 - 提交事务并打印插入的记录数。
总结
- 这段代码展示了如何使用
pymysql
库连接到 MySQL 数据库,并执行创建表和插入多条记录的操作。 - 通过使用
try...except
块,确保在出现错误时能够回滚事务并显示异常信息,增强了代码的健壮性。
异常信息