[Python] 275 MySQLでIF EXISTSが機能しない

MySQLでテーブルを一旦削除してから新たに作成する操作をする際、テーブルが存在しなくてもエラーにならないようSQL文に”IF EXISTS”を付けたのですが機能しません。

SQL文作成はf文字列でもformatメソッドでもNGでした。

仕方がないので、エラーを無視してtry-except-finallyでテーブルを作成するようにしました。

原因は不明ですが、mysql.connectorモジュールがおかしいのでしょうか。

import csv,mysql.connector,glob
import pandas as pd

<中略>

# sqlのリストを作成
sql_l = list()
for table in table_l:
    sql = f"DROP TABLE IF EXISTS horse_race_name.{table}"
    sql_l.append(sql)

sql_l2 = list()
for table in table_l:
    sql = f"CREATE TABLE horse_race_name.{table} {column_l_str}"
    sql_l2.append(sql)

# mysqlに接続
conn = mysql.connector.connect(**config)
cur = conn.cursor()

# データベースhorse_race_nameにtableを作成する
for file,table,sql,sql2 in zip(file_l,table_l,sql_l,sql_l2):
    try:
        cur.execute(sql)
    except Exception as e:
        print(e)
    finally:
        try:
            cur.execute(sql2)
        except Exception as e:
             print(e)
        else:
            cur.execute('BEGIN')

            # CSVファイルを読み込み、各行をtableに挿入する
            with open(file, 'rt', encoding='Shift-JIS') as f:
                reader = csv.reader(f)
                for i,row in enumerate(reader):
                    if i != 0:
                        row_str = str(row).replace('[','(').replace(']',')')
                        sql3 = f'INSERT INTO horse_race_name.{table} VALUES {row_str}'
                        cur.execute(sql3)

            cur.execute('COMMIT')

conn.close()