使用Python将数据插入Postgresql

时间:2017-12-17 03:27:42

标签: python postgresql

我在Postgresql TABLE中尝试INSERT个值。在我的python代码中,有两个来自不同函数的返回值ab。 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

3 个答案:

答案 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