使用psycopg2将行插入psql数据库

3

你能帮我找出我做错了什么吗? 我试图将一个新的玩家插入到“players”表中。 这是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:

向 players 表中插入玩家名为 Chandra Nalaar 的记录。

1个回答

1
你不应该使用字符串格式化将值放入SQL查询中,而应该使用%s并通过vars参数传递名称。采用这种方式的原因是它可以帮助你将参数转换为适当的数据类型。
顺便说一下,在由cursor.execute调用时,在SQL字符串末尾添加;是多余的,因为它会自动为你执行。
c.execute("INSERT INTO players(player_name) VALUES(%(name)s)", {"name":name})

请查看此页面以获取更多细节:

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


非常感谢!在我修改了代码之后,它没有显示任何错误(尽管根据文档,最后一部分应该是{"name": name"})。 - rstreet
@rstreet 不用谢,抱歉打错了,我是用手机打的:p - Taku

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接