使用psycopg2将行插入psql db

时间:2017-06-22 02:53:27

标签: python postgresql psycopg2

你可以帮我弄清楚我做错了什么吗? 我正在尝试将新玩家插入玩家表中。 这是python代码:

def registerPlayer(name):

code for connecting to db and cursor 

c.execute("INSERT INTO players(player_name) VALUES({name});".format(name=name))

code for committing to db and closing the connection

这是我的表架构:

CREATE TABLE players(
  player_id serial PRIMARY KEY,
  player_name  varchar(50) NOT NULL

);

下面是错误:

psycopg2.ProgrammingError: syntax error at or near "Nalaar" LINE 1:

INSERT INTO玩家(player_name)VALUES(Chandra Nalaar);

1 个答案:

答案 0 :(得分:1)

您永远不应该使用字符串格式将值放入sql查询中。相反,您应该使用%s并在vars参数中传递名称。这样做的原因是因为它可以帮助您将参数转换为适当的数据类型。

顺便说一句,在;调用时,sql字符串末尾有cursor.execute是多余的,因为它会自动为你完成。

c.execute("INSERT INTO players(player_name) VALUES(%(name)s)", {"name":name})

有关详细信息,请参阅此页:

http://initd.org/psycopg/docs/usage.html#query-parameters