はじめに
本記事では PyMySQL でローカルのファイルを読み込む方法についてまとめます。
環境
DB は MySQL を使用しています。
mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.30 |
+-----------+
事象
with conn.cursor() as cursor:
sql = """
LOAD DATA LOCAL INFILE 'test.csv'
INTO
TABLE Sample CHARACTER
SET
utf8 FIELDS
TERMINATED BY','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
;
"""
cursor.execute(sql)
上記のコードを実行した際に1148, 'The used command is not allowed with this MySQL version'
というエラーが発生しました。
どうやらLOAD DATA LOCAL
コマンドはセキュリティの観点からデフォルトで無効化されているようです。
そのため、ローカルファイルを読み込む場合は明示的に有効化する必要があります。
PyMySQL を使用する場合は、connection 作成時に local_infile
を設定することで有効化できます。
connection = pymysql.connect(
host = 'localhost',
user = 'root',
password = 'root_password',
database = 'testDB',
cursorclass= pymysql.cursors.DictCursor,
local_infile = True,
)
おわりに
本記事では PyMySQL でローカルのファイルを読み込む方法についてまとめました。
この記事がどなたかの参考になれば幸いです。
コメント