Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 使用mysql占位符从sql表中选择时出错_Python_Mysql_Sql_Web Scraping_Mysql Connector Python - Fatal编程技术网

Python 使用mysql占位符从sql表中选择时出错

Python 使用mysql占位符从sql表中选择时出错,python,mysql,sql,web-scraping,mysql-connector-python,Python,Mysql,Sql,Web Scraping,Mysql Connector Python,我试图在一个表中选择一些值,该表有一个名为“Name”的列。那一栏有网球运动员的名字。我想在python中为每个玩家存储一些统计信息,但访问该表时遇到了问题。我不断收到一个“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行“='Rafael Nadal''附近使用的正确语法”。正如您所看到的,MySQL清楚地解释了我用以代替'Rafael Nadal'的%s,但仍然会出现错误。有人能帮我吗 recordTuple = ('Rafael Nadal', ) mySq

我试图在一个表中选择一些值,该表有一个名为“Name”的列。那一栏有网球运动员的名字。我想在python中为每个玩家存储一些统计信息,但访问该表时遇到了问题。我不断收到一个“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在第1行“='Rafael Nadal''附近使用的正确语法”。正如您所看到的,MySQL清楚地解释了我用以代替'Rafael Nadal'的%s,但仍然会出现错误。有人能帮我吗

recordTuple = ('Rafael Nadal', )
mySql_insert_query = """SELECT `First_Serve(%)` FROM `serve2` WHERE Name =%s"""
cursor.execute(mySql_insert_query, recordTuple)
aI = cursor.fetchall()[0][0]/100

由于
%
用于标记SQL中的占位符,因此如果要按字面意思使用,必须将占位符加倍

mySql_insert_query = """SELECT `First_Serve(%%)` FROM `serve2` WHERE Name =%s"""

请参见

列名中确实有一个
%
?将其加倍到
%%
。%s是一个占位符。这在MySql python连接器中用于表示变量名。在这种情况下,变量为“Rafael Nadal”。我最终希望用户能够为自己选择播放机我知道的
%s
。问题是
First\u Serve(%)
。请尝试将列名
name
放在反勾中。把它改成第一次发球(%)谢谢,但那不行。它返回错误“字段列表”中的“未知列”First_Serve(%)”。我很确定这是查询的最后一部分的问题,因为当我用“Rafael Nadal”替换%s时,它工作得非常好。我链接到了另一个类似这样的问题。但在MySQL连接器中,它可能与PyMySQL不同。