python - 使用 psycopg2 将行插入 psql db

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

最佳答案

您永远不应该使用字符串格式将值放入 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

关于python - 使用 psycopg2 将行插入 psql db,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44689359/

相关文章:

python - 如何使用 cron 作业运行 python 文件

python - 按 pandas 中的操作分组

python - 类型提示中不允许使用 `Iterable[(int, int)]` 元组

json - Postgres 加入 JSON 列表

postgresql - pytest_postgresql 示例引发导入错误 psycopg

python - 如何在 Tensorflow Keras 中标准化我的图像数据

django - Postgres 数组

sql - 分数 = 伯努利参数的 Wilson 分数置信区间的下限

postgresql - 将 Web2py 部署到 Heroku(Psycopg2 错误)

python - Scrapy管道查询并非所有在字符串格式化期间转换的参数