This question already has answers here:
ValueError usupported format character 'd' with psycopg2
(2个答案)
2年前关闭。
这是我的用于将数据插入表中的插入语句。
这是我的数据的样子和错误。
数据库错误:
由于所有属性的类型都是正确的,因此我无法弄清为什么它继续显示此错误。
问题解决了。在我不知道psycopg会自动转换数据类型之前,所以即使数据类型是浮点型的,我也只需要使用'%s'而不是'%f%'。
http://initd.org/psycopg/docs/faq.html#faq-float
(2个答案)
2年前关闭。
insert_stat = """INSERT INTO measurement
VALUES (%(Station)s, %(Date)s, %(Level)f,
%(MeanDischarge)f, %(Discharge)f, %(Temp)f, %(EC)f)"""
这是我的用于将数据插入表中的插入语句。
这是我的数据的样子和错误。
OrderedDict(
[('Station', '219018'),
('Date', datetime.date(2004, 12, 31)),
('Level', 0.219),
('MeanDischarge', 1.996),
('Discharge', 1.731),
('Temp', None),
('EC', None)]) .
数据库错误:
unsupported format character 'f' (0x66) at index 81 .
由于所有属性的类型都是正确的,因此我无法弄清为什么它继续显示此错误。
问题解决了。在我不知道psycopg会自动转换数据类型之前,所以即使数据类型是浮点型的,我也只需要使用'%s'而不是'%f%'。
最佳答案
在查询字符串中,即使传递数字,也始终必须使用%s占位符。所有Python对象均由Psycopg以其SQL表示形式进行转换,因此它们将作为字符串传递给查询。
insert_stat = """INSERT INTO measurement
VALUES (%(Station)s, %(Date)s, %(Level)s,
%(MeanDischarge)s, %(Discharge)s, %(Temp)s, %(EC)s)"""
http://initd.org/psycopg/docs/faq.html#faq-float
09-27 22:23