我正在尝试使用Python MySQLConnector将包含数字的集合附加到我的MySQL数据库中。我可以手动添加数据,但使用%s 的以下表达式将无效。我尝试了几种变体,但文档中的任何内容似乎都不适用于我的情况。正如您所见,该表已经构建完毕:
#Table erstellen:
#cursor.execute('''CREATE TABLE anzahlids( tweetid INT )''')
这是我的代码和错误:
print len(idset)
id_data = [
len(idset)
]
print id_data
insert = ("""INSERT INTO anzahlids (idnummer) VALUES (%s)""")
cursor.executemany(insert, id_data)
db_connection.commit()
“处理格式参数失败;%s”%e)
mysql.connector.errors.ProgrammingError:处理格式参数失败; map()的参数2必须支持迭代
答案 0 :(得分:3)
迟到的答案,但我想发布一些更好的代码。另外,最初的问题是使用MySQL Connector / Python。
使用executemany()是错误的。 executemany()方法需要一系列元组,例如[(1,),(2,)]。
对于手头的问题,executemany()实际上没用,应该使用execute():
cur.execute("DROP TABLE IF EXISTS anzahlids")
cur.execute("CREATE TABLE anzahlids (tweetid INT)")
some_ids = [ 1, 2, 3, 4, 5]
cur.execute("INSERT INTO anzahlids (tweetid) VALUES (%s)",
(len(some_ids),))
cnx.commit()
使用MySQL Connector / Python(与MySQLdb不同),您必须确保提交。
(非德语人士注意:'anzahlids'表示'number_of_ids')
答案 1 :(得分:0)
以下是可在我的机器上运行的示例。
import MySQLdb
db = MySQLdb.connect(host="localhost", user="stackoverflow", passwd="", db="stackoverflow")
cursor = db.cursor()
try:
sql = 'create table if not exists anzahlids( tweetid int ) ; '
except:
#ignore
pass
sql = ("""INSERT INTO anzahlids (tweetid) VALUES (%s)""")
data = [1,2,3,4,5,6,7,8,9]
length = [len(data)]
cursor.executemany(sql,length)
db.commit()
如果idset是单个值,您可以使用
sql = ("""INSERT INTO anzahlids (tweetid) VALUES (%s)""") % len(idset)
cursor.execute(sql)
db.commit()