这个问题在这里已有答案:
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)]) .
db错误:
unsupported format character 'f' (0x66) at index 81 .
我无法弄清楚为什么它会一直显示此错误,因为所有属性的类型都是正确的。
问题解决了。在我不知道psycopg自动转换数据类型之前,所以我只需要使用'%s'而不是使用'%f%',即使数据类型是float。
在查询字符串中,即使传递数字,也始终必须使用%s占位符。所有Python对象都由Psycopg在其SQL表示中转换,因此它们作为字符串传递给查询。
insert_stat = """INSERT INTO measurement
VALUES (%(Station)s, %(Date)s, %(Level)s,
%(MeanDischarge)s, %(Discharge)s, %(Temp)s, %(EC)s)"""
我相信你的问题与你使用%s有关。尝试使用以下代码:
insert_stat = “INSERT INTO measurement(Station, Date, Level, MeanDischarge, Discharge)
VALUES (?, ?, ?, ?, ?)”, (value1, value2, value3, value4, value5)
我知道这在使用sql直接插入数据库时有效,但我不知道创建字符串。