我正在尝试将字符串列表以及其他变量类型插入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。
答案 0 :(得分:2)
尽管在许多情况下都可以传递格式化的字符串,但是这会使您容易受到SQL注入攻击的攻击。首选方法是使用占位符传递字符串,然后让Psycopg2进行参数化。
简而言之,将%
更改为逗号并删除第一个占位符周围的引号:
cur.execute(
'''INSERT INTO dbname (url, list, num) VALUES (%s,%s,%s)''',
(url, myList, number)
)