从mysql语句中选择语法错误

时间:2014-10-29 11:13:19

标签: python mysql

我在此代码中遇到语法错误:

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:找到未读结果。

4 个答案:

答案 0 :(得分:1)

首先,我假设您使用%s进行字符串格式化,而不仅仅是名为%s的文件。

我认为您需要使用'%s',而不是

中的%s
msql=("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)

我做了

enter code here

enter image description here

得到了!! enter image description here

答案 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,则代码应该有效。