0

私はpythonとmysqlも初めてで、現在「マシンのWAMPサーバーで設定したイベントであるテーブルにデータを挿入しようとしています。データベースに保存する必要があるデータは、さまざまな場所に保存されています。私のpythonプログラム内の配列とこれらはすべて正しく保存されています.pythonプログラムを介してlocalhostデータベースに正常に接続できますが、データベースに書き込むときにmysql構文に問題があります.

誰かが私を助けてくれることを願っています-基本的に、配列に格納されている要素を自分のマシン(ローカルホスト)でローカルに設定したデータベースに書き込むための for ループを設定しました。

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()

私が受け取ったエラーには、以下の情報が含まれています。ここに表示されている要素は、私が正常に指定した配列から読み取っています。 :". 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:リストインデックスが範囲外です」というエラーが表示され、35回の反復後にPythonプログラムが終了します(反復する必要がある場合)エレメントをデータベースに 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]))
4

2 に答える 2

1

挿入されるすべての文字列値を引用符で囲む必要があります。

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]))
于 2013-04-20T17:50:24.067 に答える