【发布时间】:2017-08-04 22:46:23
【问题描述】:
我正在尝试将数据帧中的数据写入 sql 数据库中的沙箱表。下面是来自 df 的一些示例数据。
rank type id lp olp
0 A 823L02X 24.95 NULL
1 B 823M00B 39.95 NULL
2 C 823M00B 39.95 12.95
只要数据框中的所有数据都符合其目标列中指定的 dtype,以下代码就可以正常工作。
connect_string = r'<user>:<password>@<host>/<databasename>'
db = create_engine('mysql+mysqldb://' + connect_string)
df.to_sql(name=<table_name>, con=db, if_exists='append', index=True)
在我正在编写的表中,列 lp 和 olp 的 dtype 为小数 - 但是,数据框中的某些值包含 NULL 值。每当我尝试写入表时,这些 NULL 值都会引发错误 - 我认为 sql 将它们视为字符串而不是识别 NULL。
sqlalchemy.exc.OperationalError: (_mysql_exceptions.OperationalError) (1366, "Incorrect decimal value: 'NULL' for column 'olp' at row 1")
如果我把这个dataframe导出为csv,然后使用HeidiSQL中的导入工具手动上传到表中,程序会自动识别NULL值,没有问题。
如何使用 sqlalchemy 获得相同的结果?
【问题讨论】:
标签: python mysql sql sqlalchemy