问题:是否有更短的语法可以使用 psycopg2 将值插入到 postgres 表中?

我正在尝试使用 psycopg2 和 Python 2.7 将许多列插入到表行中。有没有办法缩短 INSERT 语法?我目前必须一遍又一遍地输入占位符 (%s),例如 VALUES(%s,%s,%s,...%s)

编辑:目前我有

tableCursor.execute('INSERT INTO "table" ("x1","x2","x3","x4")' +
            'VALUES (%s,%s,%s,%s)', (val1,val2,val3,val4))

我想使用的不仅仅是占位符,但继续输入 %s 有点重复。

解答

没有。

如果您有足够的列这是一个问题,那么 (a) 您可能需要重新考虑您的模式设计,并且 (b) 您始终可以使用', '.join(['%s']*n)其中n是生成字符串的参数数量。

>>> ', '.join(['%s']*7)
'%s, %s, %s, %s, %s, %s, %s'

>>> 'INSERT INTO tablename(col1,col2,col3,col4,col5,col6,col7) VALUES (' + ', '.join(['%s']*7) + ');'
'INSERT INTO tablename(col1,col2,col3,col4,col5,col6,col7) VALUES (%s, %s, %s, %s, %s, %s, %s);'

我同意让psycopg根据命名的列数自动推断VALUES列表(如果您没有明确给出它)会很好。但是,它没有,而且很容易DIY。

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐