Python Psycopg2未以正确格式插入字符串列表

Python Psycopg2未以正确格式插入字符串列表,python,psycopg2,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 "[" 我打印出了我正在执行的字符串,psyco

我正在尝试将字符串列表以及其他变量类型插入到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用括号写入列表,这会抛出错误,它应该是
{}


我做错了什么?我用的是Postgres 9

虽然传递格式化字符串在许多情况下都有效,但它会使您容易受到SQL注入攻击。首选的方法是传递带有占位符的字符串,并让Psycopg2进行参数化

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

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

虽然传递格式化字符串在许多情况下都有效,但它会使您容易受到SQL注入攻击。首选的方法是传递带有占位符的字符串,并让Psycopg2进行参数化

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

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

避免SQL注入!尝试:
cur.execute(''INSERT-INTO-dbname(url,list,num)值(%s,%s)',(url,myList,number))
引号是否正确?
('%s',%s,%s)
正如pault所说,不要使用%格式化自己。psycopg2为你做这件事。而且正如mad_uu所说,引号是不需要的。@pault将
%
切换为
成功了!非常感谢。避免SQL注入!尝试:
cur.execute(''INSERT-INTO-dbname(url,list,num)值(%s,%s)',(url,myList,number))
引号是否正确?
('%s',%s,%s)
正如pault所说,不要使用%格式化自己。psycopg2为你做这件事。而且正如mad_uu所说,引号是不需要的。@pault将
%
切换为
成功了!非常感谢。