我正在努力None
使用 PygreSQL v5.0.6 从 python 将值插入到 PostgreSQL 数据库的日期列中。
一些代码:
def _update_traits_db(self, code, date_start, date_end, unit):
sql = ("Insert into traits (code, date_start, date_end, unit) "
"VALUES ('%s', '%s', '%s', '%s') "
"ON CONFLICT (code) DO UPDATE "
"SET date_start = excluded.date_start, date_end = excluded.date_end, unit = excluded.unit "
% (code, date_start, date_end, unit))
try:
self._connect()
self._cur.execute(sql)
self._con.commit()
self._close()
except Exception as e:
self._close()
raise e
我面临几个问题,最大的问题是 and 的值的可能性,None
第一个是导致 SQL 错误的日期,例如:date_end
unit
错误:日期类型的输入语法无效:“无”
第 1 行:...d,单位)值('AWGHT'、'2003-01-29T23:00:00Z'、'None'、'N... ^如果我用硬编码的 NULL 替换 none 值,那么它可以工作,但通过阅读我认为它应该被处理 py PyGreSQL 自动转换None
为 NULL 但我无法让它工作。
第二个问题是列None
中的值unit
,这应该是一个字符串,但None
现在存储在数据库中,理想情况下它是一个 NULL 值。我尝试从查询 vut 中的单元的“%s”周围删除引号,这只会导致 None 值上的 SQL 错误。
我对 Python 和 PostgreSQL 还很陌生,所以有很多潜在的地方我可能搞砸了,所以所有建议都非常受欢迎。