Python如何将嵌套列表数据写入MySQL生成对应数据表
Python嵌套列表写入MySQL实现方案
首先修正你原始代码的问题:示例中的姓名是字符串值,必须加引号,否则Python会将其识别为未定义变量抛出错误,修正后的数据结构如下:
attr = [ ["Bob", 5.6, 140, 45], ["Jay", 5.8, 150, 33], ["Joe", 6.2, 180, 25] ]
前置准备
先安装Python操作MySQL的依赖库,执行命令:
pip install pymysql
完整实现代码
代码逻辑包含连接MySQL、创建目标数据表、批量插入嵌套列表数据全流程,注意将连接配置中的数据库地址、账号、密码、库名替换为你自己的环境参数:
import pymysql # 1. 建立数据库连接 conn = pymysql.connect( host="127.0.0.1", # 替换为你的MySQL地址 user="root", # 替换为你的MySQL账号 password="your_password", # 替换为你的MySQL密码 database="test_db",# 替换为要写入的数据库名,需要提前手动创建 charset="utf8mb4" ) cursor = conn.cursor() # 2. 执行建表语句,表已存在时自动跳过 create_table_sql = """ CREATE TABLE IF NOT EXISTS person_attr ( id INT AUTO_INCREMENT PRIMARY KEY, Name VARCHAR(32) NOT NULL, Height FLOAT NOT NULL, Weight INT NOT NULL, Age INT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; """ cursor.execute(create_table_sql) # 3. 批量插入嵌套列表数据,使用参数化占位符,禁止直接拼接SQL语句 insert_sql = "INSERT INTO person_attr (Name, Height, Weight, Age) VALUES (%s, %s, %s, %s)" # executemany会自动遍历嵌套列表,将每个子列表的元素按顺序匹配占位符 cursor.executemany(insert_sql, attr) # 4. 提交事务,必须执行否则数据不会真正写入数据库 conn.commit() # 5. 释放资源关闭连接 cursor.close() conn.close()
关键注意点
- 插入时统一用
%s作为占位符,不需要区分字段的数字/字符串类型,pymysql会自动做类型适配和转义,能有效避免SQL注入风险,不要手动把列表值拼接到SQL字符串中。 - 用
executemany()方法批量处理嵌套列表,比循环单条执行INSERT语句的效率高很多,传入的嵌套列表每个子列表的元素顺序,要和INSERT语句里声明的字段顺序一一对应。 - 所有写操作执行完必须调用
conn.commit()提交事务,否则操作不会真正落到数据库中。
内容的提问来源于stack exchange,提问作者Umesh Shreeman
相关产品推荐
相关产品推荐

