Psycopg2没有以正确的格式插入字符串列表

时间:2018-07-20 20:12:05

标签: python psycopg2

我正在尝试将字符串列表以及其他变量类型插入PostgreSQL数据库中。

如psycop2文档中所述,我正在做

cur.execute('''INSERT INTO dbname (url, list, num) VALUES ('%s',%s,%s)''' % (url, myList, number))

我收到以下错误消息:

psycopg2.ProgrammingError: syntax error at or near "[" 

我打印出我正在执行的字符串,而psycopg2用括号将列表写入列表,这会引发错误-应该为{}

我在做什么错?我正在使用Postgres9。

1 个答案:

答案 0 :(得分:2)

尽管在许多情况下都可以传递格式化的字符串,但是这会使您容易受到SQL注入攻击的攻击。首选方法是使用占位符传递字符串,然后让Psycopg2进行参数化。

简而言之,将%更改为逗号并删除第一个占位符周围的引号:

cur.execute(
    '''INSERT INTO dbname (url, list, num) VALUES (%s,%s,%s)''',
    (url, myList, number)
)