data = [2, 5.5, 'Harry Potter']
statement = "INSERT INTO ranks (Rank, Height, Name) values(%s, %s, %s)"
#made a connection to a postgres database using psycopg2
我想将名为data
的列表作为参数传递给用于执行该语句的cursor.execute()
函数。
注意:由于
data
列表包含具有不同数据的元素类型,我不能在上面使用string.join((方法。
我应该怎么做?
请参阅此处。
基本上:
cur.execute(statement, data)
因此,将一系列值按顺序传递给将与%s
参数匹配的查询。
更新。操作:
create table ranks (rank integer, height numeric, name varchar);
import psycopg2
con = psycopg2.connect("dbname=test host=localhost user=aklaver")
data = [2, 5.5, 'Harry Potter']
statement = "INSERT INTO ranks (Rank, Height, Name) values(%s, %s, %s)"
cur = con.cursor()
cur.execute(statement, data)
con.commit()
select * from ranks ;
rank | height | name
------+--------+--------------
2 | 5.5 | Harry Potter
工作。因此,您的错误一定与其他数据或语句有关。