你能帮我弄清楚我做错了什么吗? 我正在尝试将新玩家插入到玩家表中。 这是 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 players(player_name) VALUES(茜卓纳拉);
最佳答案
您永远不应该使用字符串格式将值放入 sql 查询中。相反,您应该使用 %s
并在 vars
参数中传递名称。这样做的原因是因为它可以帮助您将参数转换为适当的数据类型。
顺便说一句,当 cursor.execute
调用时,在 sql 字符串的末尾有一个 ;
是多余的,因为它会自动为您完成。
c.execute("INSERT INTO players(player_name) VALUES(%(name)s)", {"name":name})
有关详细信息,请参阅此页面:
关于python - 使用 psycopg2 将行插入 psql db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689359/