python脚本中的mySQL查询

时间:2017-05-31 12:16:38

标签: python mysql

我需要对DB执行查询,以检查DB中是否存在文件以及文件修改时间是什么。函数参数是名称(文件名)和mtime1(来自文件系统的mod时间)。我用脚本:

def chkModTS(name,mtime1):
import mysql.connector
cnx = mysql.connector.connect(user='uname', password='pass', host='192.168.1.1', database='newpms')
cursor = cnx.cursor()
query=("SELECT mtime FROM pf_scanOrd WHERE filename=%s")
query_data=(name)
cursor.execute(query,query_data)
print(cursor.rowcount)
if cursor.rowcount==-1:
    chkModTS.upd=1        
    print('pole DBs')
    return
for (mtime) in cursor:
    print(float(mtime[0])!=mtime1)
    if float(mtime[0])!=float(mtime1):
        chkModTS.upd=1
        print('need update')
        return     
cursor.close()
cnx.close()

当我运行此功能时,结果将是:

  

mysql.connector.errors.ProgrammingError:1064(42000):你有一个   SQL语法错误;查看与您的手册相对应的手册   MySQL服务器版本,用于在第1行的“%s”附近使用正确的语法

无法弄清楚,需要帮助

2 个答案:

答案 0 :(得分:1)

您可能只是在定义s = smtplib.SMTP("smtp.gmail.com") 时错过了逗号。

s = smtplib.SMTP("smtp.gmail.com", 587) 需要一个元组作为第二个参数。只是在括号中包装一个值什么都不做,所以试试:

query_data

使.execute()成为一个实际的元组。

答案 1 :(得分:0)

您的查询字符串中有错误:

"SELECT mtime FROM pf_scanOrd WHERE filename=%s"

拥有%s占位符,但不能用任何值替换它。您应该像以下一样使用它:

"SELECT mtime FROM pf_scanOrd WHERE filename=%s" % filename_variable

其中filename_variable将包含您要查询的文件名。