Python 解包多个值并存储到数据库失败

Python 解包多个值并存储到数据库失败,python,mysql,pymysql,Python,Mysql,Pymysql,我有一个函数,我正在调用insert\u into\u db\u tmp()。但是,当我执行它时,它使用完整表示,而不是test.com/test2和path的值 调用insert\u到\u db\u tmp()中 def insert_into_db_tmp(dbcursor, table, col, val): try: query = "INSERT INTO %s (%s) VALUES (%s)",(table, ",".join(col), ",".join(

我有一个函数,我正在
调用insert\u into\u db\u tmp()
。但是,当我执行它时,它使用完整表示,而不是
test.com/test2
path
的值

调用insert\u到\u db\u tmp()中

def insert_into_db_tmp(dbcursor, table, col, val):
    try:
        query = "INSERT INTO %s (%s) VALUES (%s)",(table, ",".join(col), ",".join(val))
        print(query)
        dbcursor.execute(query)
        print("inserted!")
    except pymysql.Error as exc:
        print("error inserting...\n {}".format(exc))
我这样称呼它:

connection=conn_db()
table = ['test']
col = ['path',]
val = ['test.com/test2',]
insert_into_db_tmp(connection, settings.dni+table,str(col),str(val))
当我执行此操作时,我得到:

INSERT INTO test () VALUES ('{'vals': ['test.com/test2'], 'cols': ['path']}')
error inserting...
 (1064, "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 'vals': ['test.com/test2'], 'cols': ['path']}')' at line 1")
注意:
insert_into_db_tmp()
的目标是允许输入多个
col
,以及多个
val
。因此,它们在未来的表现形式可能是:

cols=['path','address']
vals=['somesite.com/id=6', '123 Hector Lane']
有人能帮我解决这个问题吗


谢谢。

对您的值使用适当的参数替换,而不是
格式
@AlexHall-您能创建一个答案吗?不,谷歌“python mysql参数替换”并尝试一下。@Alex-它实际上没有所选示例那么简单。另外,我用“正确的参数化…仍然会出现相同的错误,因此虽然我可能会使代码看起来更好一些,但根本问题并没有得到解决。