我对 python 和 mysql 也很陌生,目前正在尝试“将数据插入表中,我在我的机器上的 WAMP 服务器上为其设置的事件。我需要存储到数据库中的数据存储在各种我的python程序中的数组,这些都已正确存储。我能够通过我的python程序成功连接到localhost数据库,但是在写入数据库时我的mysql语法有问题。
我希望有人能够帮助我——我基本上已经设置了一个 for 循环来将存储在数组中的元素写入我在我的机器(localhost)上本地设置的数据库。
length = range(len(event_ids))
imageid = 0
for z in length:
cur.execute("""INSERT INTO events (event_id, event_title, start_time, stop_time, venue_id, image_id, all_day, venue_name) VALUES (%s, %s, %s, %s, %s, %s, %s, %s""" %(event_ids[z], event_names1[z], start_times1[z], stop_times1[z], venue_ids1[z], imageid, all_day_list1[z], venue_names1[z]))
db.commit()
cursor.close()
db.close()
我收到的错误包括以下信息。此处显示的元素是从我已成功指定的数组中读取的 "@2013042020, Prodijig Dublin, 2013-04-20 20:00:00, 2013-04-20 23:59:00, V0-001-0 :"。我只是不知道为什么会收到 SQL 语法错误。如果有人能就我可能出错的地方提供任何信息,我将不胜感激。
错误:
cur.execute("""INSERT INTO events (event_id, event_title, start_time, stop_time, venue_id, image_id, all_day, venue_name) VALUES (%s, %s, %s, %s, %s, %s, %s, %s""" %(event_ids[z], event_names1[z], start_times1[z], stop_times1[z], venue_ids1[z], imageid, all_day_list1[z], venue_names1[z]))
File "C:\Python27\lib\site-packages\MySQLdb\cursors.py", line 202, in execute
self.errorhandler(self, exc, value)
File "C:\Python27\lib\site-packages\MySQLdb\connections.py", line 36, in defaulterrorhandler
raise errorclass, errorvalue
ProgrammingError: (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 '@2013042020, Prodijig Dublin, 2013-04-20 20:00:00, 2013-04-20 23:59:00, V0-001-0' at line 1")
编辑:在下面的讨论之后,我对此代码进行了修复,但是由于某种原因我目前无法解释,我现在收到“IndexError:列表索引超出范围”错误,并且我的 python 程序在 35 次迭代后终止(当它应该迭代和向数据库插入元素 50 次)。如果有人也可以帮助我,我将不胜感激。但是,这可能与此声明无关-我现在还不确定。
无论如何,我固定的 mysql 插入代码是:
cur.execute('INSERT INTO events (event_id, event_title, start_time, stop_time, venue_id, image_id, all_day, venue_name) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)' , (event_ids[z], event_names1[z], start_times1[z], stop_times1[z], venue_ids1[z], imageid, all_day_list1[z], venue_names1[z]))