我在此代码中遇到语法错误:
msql=("SELECT FILE_NAME FROM file_processed WHERE FILE_NAME = %s ;")
if cursor.execute(msql,name):
return True
else:
return False
我在“%s”附近收到错误 任何人都可以告诉我什么?谢谢!
错误: mysql.connector.errors.ProgrammingError:1064(42000):你在SQL语法中有一个错误:检查Mysql服务器版本是否正确的语法在第1行的'%s'附近使用我使用mysql 5.6
现在我试试这个:
msql=("SELECT FILE_NAME FROM file_processed WHERE FILE_NAME='HCTC3153_INF.TXT'; ")
if cursor.execute(msql):
print "its is in the db"
return True
else:
print "its not in db"
return False
总是返回它不在db中甚至在那里... 现在的错误是: 提出errors.InternalError(“找到未读结果。”) mysql.connector.errors.InternalError:找到未读结果。
答案 0 :(得分:1)
首先,我假设您使用%s进行字符串格式化,而不仅仅是名为%s的文件。
我认为您需要使用'%s',而不是
中的%smsql=("SELECT FILE_NAME FROM file_processed WHERE FILE_NAME ='%s'")
很抱歉,如果我误解了%s的完全使用
答案 1 :(得分:0)
msql =(“SELECT FILE_NAME FROM file_processed WHERE FILE_NAME LIKE'%s'”)
尝试这个dnt需要放;靠近%s
答案 2 :(得分:0)
答案 3 :(得分:0)
第一个错误的答案,我假设如下:
mysql.connector.errors.ProgrammingError:1064(42000):你有一个 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在'%s'附近使用正确的语法
是因为cursor.execute()
期望第二个参数中有一个元组,正如@mata in this SO post所解释的那样。在您的情况下,您的代码应为cursor.execute(mysql,(name,))
- 请注意name
之后的逗号。
我认为您收到了第二个错误:
mysql.connector.errors.InternalError:找到未读结果
因为你没有对结果做任何事情。如果您在result = cursor.fetchall()
区块中添加了if
,则代码应该有效。