我有这个列表,我试图插入我的数据库。我尝试了许多其他方法,我在谷歌或这里找到但似乎都没有。
results = ['match number 1','match number 2','match number 3']
query = "INSERT INTO round1 (details) VALUES ("
query = query+"'"+results+"')"
x = conn.cursor()
x.execute(query)
conn.commit()
我一直收到此错误
Type Error: cannot concatenate 'str' and 'list' objects
谁能告诉我我做错了什么?
答案 0 :(得分:3)
不要使用连接,请使用SQL参数:
query = "INSERT INTO round1 (details) VALUES (%s)"
c = conn.cursor()
c.executemany(query, [(r,) for r in results])
您的代码尝试将整个列表与字符串连接起来;你只能将字符串连接到字符串。但是要为每个值插入多行,您需要在INSERT
中为每个条目运行results
语句。
在这里使用SQL参数有几个优点:
cursor.executemany()
使用不同的值运行相同的查询,只需一次调用。此处的cursor.executemany()
调用会在第二个参数中找到每个“行”,从每行中获取值以运行单独的INSERT
语句。
答案 1 :(得分:0)
我不断收到此错误类型错误:无法连接'str'和'list'对象,任何人都可以告诉我我做错了什么?
首先,你所做错的是尝试连接str和list对象。你不能那样做:你只能用字符串连接一个字符串。
其次,使用预准备语句而不是字符串操作来与数据库进行通信。它将为您提供更少的代码,更安全。