Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 引用在PostgreSQL查询中不起作用_Python_Sql_Database_Postgresql - Fatal编程技术网

Python 引用在PostgreSQL查询中不起作用

Python 引用在PostgreSQL查询中不起作用,python,sql,database,postgresql,Python,Sql,Database,Postgresql,我有下表 create table players (name varchar(30), playerid serial primary key); 创建表播放器(名称varchar(30),playerid序列主键) 我正在使用脚本: def registerPlayer(name): """Registers new player.""" db = psycopg2.connect("dbname=tournament") c = db.cursor() pl

我有下表
create table players (name varchar(30), playerid serial primary key); 创建表播放器(名称varchar(30),playerid序列主键)
我正在使用脚本:
def registerPlayer(name): """Registers new player.""" db = psycopg2.connect("dbname=tournament") c = db.cursor() player = "insert into players values (%s);" scores = "insert into scores (wins, matches) values (0, 0);" c.execute(player, (name,)) c.execute(scores) db.commit() db.close() def注册层(名称): “”“注册新玩家。”“” db=psycopg2.connect(“dbname=tournament”) c=db.cursor() player=“插入到players值(%s);” scores=“插入分数(赢、比赛)值(0、0) c、 执行(玩家,(姓名) c、 执行(分数) db.commit() db.close()
但当我尝试用引号将一个玩家注册时:

registerPlayer("Any Name") 注册层(“任何名称”) 它不起作用。。。现在,如果我直接将查询输入到psql中,那么如果我只使用单引号,它就会工作,因此

INSERT INTO players VALUES ('Any Name'); 插入玩家值(“任何名称”); 但如果我用“任何名字”就不行。如果我使用“”,它会告诉我: ERROR: column "Any Name" does not exist 错误:“任意名称”列现在不存在,如果我想在中输入一个名称,例如Bob O'Neal,这是一个问题,因为它将在O之后关闭该条目。


前几天引号工作正常,我开始格式化,以便所有SQL查询都大写,所有内容都停止工作。我回到了工作正常的代码,现在什么都不工作了

SQL中的双引号不是字符串-它们转义表、索引和其他对象名称(例如,
“John Smith”
指名为
John Smith
的表)。实际上,只有单引号字符串才是字符串


在任何情况下,如果您正确地使用了查询参数(在示例代码中,您似乎是这样),就不必担心转义数据。只需将原始值传递给
execute
(例如
c.execute(player,(“Bob O'Niel”)

插入players值(““任意名称”)此外,您必须遵循列顺序或显式设置列名。-所以函数是这样的:registerPlayer(“Bob O'Niel”),但它仍然没有注册。