python脚本中的mySQL查询

2024-09-30 00:40:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对数据库执行查询,以检查数据库中是否存在文件以及文件修改时间是多少。函数参数是name(文件名)和mtime1(来自文件系统的mod time)。我使用脚本:

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): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '%s' at line 1

想不出来,需要帮助吗


Tags: 文件name数据库dataconnectormysqlfloatquery
2条回答

您可能只是在定义query_data时缺少一个逗号。在

.execute()需要一个元组作为第二个参数。只需将值括在括号中不会有任何效果,请尝试:

query_data = (name,)

使query_data成为实际的元组。在

查询字符串中有错误:

"SELECT mtime FROM pf_scanOrd WHERE filename=%s"

有一个%s占位符,但没有用任何值替换它。你应该像这样使用它:

^{pr2}$

其中filename_variable将保存要查询的文件名。在

相关问题 更多 >

    热门问题