我想在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
?
Python没有参数化查询的(单个)标准占位符值。 SQLite使用?
,但MySQL和Postgresql驱动程序使用%s
(适用于所有数据类型,而不仅仅是字符串):
cur.execute("INSERT INTO description VALUES(%s,%s,%s,%s,%s,%s)", (a + b))
尝试使用%s作为格式说明符,它可以工作。
正如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
可以使用!