我正在制作数据库以用变量填写 table

i'm making database to fill out a table with variable

import pymysql
from datetime import datetime


db = pymysql.connect(host = "localhost", user = "root", password = "mariadb", charset = "utf8");
cursor = db.cursor();

nm = 'park dong ju'
temp = 36.5
n_route = '->podium',


if nm != "" and temp != 0:
        cursor.execute("USE SD;")
        select_name ="SELECT name FROM PI WHERE name = '%s'"
        select_route = "SELECT route FROM PI WHERE name = '%s'"

        cursor.execute(select_name,(nm,))
        PI_name = cursor.fetchone()
        cursor.execute(select_route,(nm,))
        PI_route = cursor.fetchone()
        db.commit()

        str_route = str(PI_route)

        route = str_route + n_route

        current_time = datetime.now()

        insert_er = "INSERT INTO ER(name,temp,route,time) VALUES('%s',%.2f,'%s','%s')"
        cursor.execute(insert_er,(nm,tmep,route,current_time))
        name = ""
        temp = 0



db.commit()
db.close()

这是我的代码

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'park_dong_ju''' at line 1")

这是关于代码的错误

当您使用 MySql 占位符时,您不需要格式化它们,也不需要使用引号。 MySql 游标将尝试转换您的数据类型。您可以将查询更改为:

insert_er = "INSERT INTO ER(name,temp,route,time) VALUES(%s,%s,%s,%s)"    
cursor.execute(insert_er,(nm,tmep,route,current_time))

您也可以修改您的第一个查询,并删除您的引号:

select_name ="SELECT name FROM PI WHERE name = %s"
select_route = "SELECT route FROM PI WHERE name = %s"

cursor.execute(select_name,(nm,))
PI_name = cursor.fetchone()
cursor.execute(select_route,(nm,))