我在Postgresql TABLE中尝试INSERT
个值。在我的python代码中,有两个来自不同函数的返回值a
和b
。 a和b是tuples
。
等
a = ('cat', 'dog', 'tree')
b = ('city', 'town', 'road')
数据库表名称为description
,有六列。我正在使用
cur.execute("INSERT INTO description VALUES(?,?,?,?,?,?)",(a + b))
我想在此表中附加值。但它显示错误,Error syntax error at or near ","
是否有其他方法或应将其从list
转换为tuple
?
答案 0 :(得分:0)
Python没有参数化查询的(单个)标准占位符值。 SQLite使用?
,但MySQL和Postgresql驱动程序使用%s
(对于所有数据类型,而不仅仅是字符串):
cur.execute("INSERT INTO description VALUES(%s,%s,%s,%s,%s,%s)", (a + b))
答案 1 :(得分:0)
尝试使用%s 作为格式说明符,它可以工作。
答案 2 :(得分:0)
正如 Blender 所说,你只需%s
就可以了!但是由于您的数据中有一些动物,也许您可以使用pg
数组将这些动物类型存储在同一个字段中!
create table description (a char(16), b char(16), c char(16), d char(16), e char(16), f char(16));
您可以通过以下方式轻松存储数据:
插入描述值('狗','猫','树','城市','城镇','道路')
但是,如果你的动物可能有动物,那么更好的方法是array
。
create table description2 (animals char(16)[], d char(16), e char(16), f char(16));
并将您的数据设为这样。
INSERT INTO description2 VALUES(ARRAY ['dog', 'cat', 'tree'], 'city', 'town', 'road');
然后您可以通过以下方式轻松获取数据:
select * from description2;
PG
是一个很好的数据库,可以使用很多type
!