我的表格中有一个插入字符串,但有些值为空,这不是问题,因为这些值应该有意留空。我正在寻找一种智能的方法来处理这个问题而无需重写我的插入字符串....它比下面的内容长得多,但下面显示了定义为real
数据类型的两个字段。
cursor.execute("INSERT INTO table_" + country + " (lat, lon) VALUES (%s, %s)" , (loc['LAT'], loc['LON'], ))
所以有时候
loc['LAT']
将为''
,其他时间为'54.44'
loc['LON']
将''
,其他时间为'53.46'
。 pg8000.errors.ProgrammingError: ('ERROR', '22P02', 'invalid input syntax for type real: ""')
如果这些是空白的,我会收到以下错误:
{{1}}
答案 0 :(得分:3)
如果这些列接受null
cursor.execute("""
insert into table_" + country + " (lat, lon) values (%s, %s)
""" , (loc['LAT'] or None, loc['LON'] or None)
)
答案 1 :(得分:0)
您正在使用空字符串来表达此列的一行中没有数据的想法。空字符串不是有效的实数。这就是你得到错误的原因。
您需要在此列中允许NULL,并更改输入,以便在缺少值时,它提供NULL(不带任何引号)而不是实数。
但是,如果您允许NULLS,您需要意识到如果您对此列进行统计汇总,SQL处理NULL的方式将在您的输出中引入奇怪的后果。如果这些后果不幸,则需要采用不同的方法。