使用 psycopg2 将行插入 psql db

Insert row into psql db using psycopg2

你能帮我弄清楚我做错了什么吗? 我正在尝试将新玩家插入玩家 table。 这是 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

这是我的 table 架构:

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 players(player_name) VALUES(茜卓纳拉);

切勿使用字符串格式将值放入 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