python mysql.connectorを利用し、sqlを実行する時に、一つずつexecuteすると上手くいくのですが、複数のsqlを実行する時に失敗します。エラーは表示されずに、単にデータが入らいない状態です。ドキュメントを見る限りmulti=Trueとすれば、上手くいくはずなのですが、原因が不明です。
成功するコードと失敗するコードの違いは、
"truncate table jockey_seiseki;" を一緒のsql文に入れるか入れないかになります。
どなたかご教授頂ければ幸いです。
※成功するコード(一つずつsqlを実行)
python
1# 成功するコード 2import mysql.connector 3cnx = mysql.connector.connect(host="localhost", 4 user="root", 5 password="root", 6 database='everydb2') 7 8cursor = cnx.cursor() 9cursor = cnx.cursor(buffered=True) 10print(cursor) 11hizuke = "2021-04-01"; 12 13# 単独で実行 14cursor.execute("""truncate table jockey_seiseki;""") 15 16operation = ( 17 18""" 19INSERT INTO jockey_seiseki(kisyucode,name,Year,MonthDay, JyoCD ,RaceNUm,KakuteiJyuni,winloss,tyakugai,rengai,Ninki) 20SELECT 21 T1.KisyuCode as `騎手コード`, 22 T1.KisyuRyakusyo, 23 T1.Year as `開催年`, 24 T1.MonthDay as `開催月日`, 25 T1.JyoCD as `競馬場コード`, 26 T1.RaceNum as `レース番号`, 27 T1.KakuteiJyuni as `確定着順`, 28 CASE T1.KakuteiJyuni 29 WHEN '01' THEN true 30 ELSE false END as `勝敗フラグ`, 31 CASE T1.KakuteiJyuni 32 WHEN '01' THEN true 33 WHEN '02' THEN true 34 WHEN '03' THEN true 35 ELSE false END as `着外フラグ`, 36 CASE T1.KakuteiJyuni 37 WHEN '01' THEN true 38 WHEN '02' THEN true 39 ELSE false END as `連外フラグ`, 40 T1.Ninki from N_UMA_RACE as T1 41 where T1.KakuteiJyuni > 0 and T1.DataKubun = '7' 42 and str_to_date(concat(Year,MonthDay) ,'%Y%m%d') >= %s 43 order by Year,MonthDay; 44"""); 45 46x = cursor.execute(operation,(hizuke,)) 47
失敗するコード(複数sqlを実行)
python
1# 失敗するコード 2import mysql.connector 3cnx = mysql.connector.connect(host="localhost", 4 user="root", 5 password="root", 6 database='everydb2') 7 8# hizuke = "2021-04-01"; 9 10operation = (""" 11truncate table jockey_seiseki; 12INSERT INTO jockey_seiseki(kisyucode,name,Year,MonthDay, JyoCD ,RaceNUm,KakuteiJyuni,winloss,tyakugai,rengai,Ninki) 13SELECT 14 T1.KisyuCode as `騎手コード`, 15 T1.KisyuRyakusyo, 16 T1.Year as `開催年`, 17 T1.MonthDay as `開催月日`, 18 T1.JyoCD as `競馬場コード`, 19 T1.RaceNum as `レース番号`, 20 T1.KakuteiJyuni as `確定着順`, 21 CASE T1.KakuteiJyuni 22 WHEN '01' THEN true 23 ELSE false END as `勝敗フラグ`, 24 CASE T1.KakuteiJyuni 25 WHEN '01' THEN true 26 WHEN '02' THEN true 27 WHEN '03' THEN true 28 ELSE false END as `着外フラグ`, 29 CASE T1.KakuteiJyuni 30 WHEN '01' THEN true 31 WHEN '02' THEN true 32 ELSE false END as `連外フラグ`, 33 T1.Ninki from N_UMA_RACE as T1 34 where T1.KakuteiJyuni > 0 and T1.DataKubun = '7' 35 and str_to_date(concat(Year,MonthDay) ,'%Y%m%d') >= %s 36 order by Year,MonthDay; 37"""); 38 39 40x = cursor.execute(operation,(hizuke,),multi=True) 41 42
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/11 00:15