使用 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})
有关详细信息,请参阅此页面:
你能帮我弄清楚我做错了什么吗? 我正在尝试将新玩家插入玩家 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})
有关详细信息,请参阅此页面: