如果要使用bulk_insert
方法插入值,但不想向可为空字段插入值,可以在插入之前进行检查,将可为空字段设置为None
。以下是一个示例解决方法:
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
# 创建引擎和元数据对象
engine = create_engine('mysql+pymysql://username:password@localhost/db_name')
metadata = MetaData()
# 创建表格对象
my_table = Table('my_table', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(50)),
Column('age', Integer, nullable=True) # 可为空字段
)
# 准备要插入的数据
data = [
{'name': 'John', 'age': 25},
{'name': 'Jane', 'age': None}, # age设置为None,不插入值
{'name': 'Tom', 'age': 30}
]
# 检查数据中的可为空字段,将其设置为None
for item in data:
if item['age'] is None:
item['age'] = None
# 执行批量插入
with engine.begin() as connection:
connection.execute(my_table.insert().values(data))
在上述示例中,我们首先创建了一个包含可为空字段的表格对象。然后,我们准备要插入的数据,并在插入之前进行检查。如果某个数据项的可为空字段为None,则将其设置为None。最后,我们使用bulk_insert
方法将数据批量插入到表格中。