【问题标题】:Handling NULL values when using sqlalchemy-python使用 sqlalchemy-python 时处理 NULL 值
【发布时间】: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


    【解决方案1】:

    SQLAlchemy 通常希望您将 Python 值 None 用于空的 DB 值。我希望您需要做的就是确保您的输入值在编写之前正确编组为 Python 的 None 并且它应该“正常工作”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-24
      • 1970-01-01
      • 2016-02-20
      • 2015-02-13
      • 2019-10-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多