Python: SQLite3に改行を含むデータをINSERTする方法
以下のコードは改行を含むデータをテーブルにInsertする例です。
テーブル名 test、カラム(id, comment)。
commentは複数行で、idとcommentを同時に指定してインサートします。
import sqlite3 # データベースに接続 with sqlite3.connect('database.db') as conn: cursor = conn.cursor() # テーブルが存在しない場合は作成 cursor.execute(''' CREATE TABLE IF NOT EXISTS test ( id INTEGER PRIMARY KEY, comment TEXT ) ''') # 改行を含むデータ data = [ (1, "これは最初のコメントです。\n複数行にわたります。\n3行目です。"), (2, "2番目のコメントです。\n改行が含まれています。") ] # データをインサート cursor.executemany(''' INSERT INTO test (id, comment) VALUES (?, ?) ''', data) # 変更をコミット conn.commit() print("データが正常にインサートされました。")
コードの説明:
sqlite3.connect('database.db')
で、データベースに接続します。with
文を使用しているので、処理が終わると自動的に接続が閉じられます。CREATE TABLE IF NOT EXISTS
文で、テーブルが存在しない場合にテーブルを作成します。data
リストに、IDとコメントのタプルを格納します。コメントには\n
を使用して改行を含めています。cursor.executemany()
を使用して、複数のデータを一度にインサートします。?
はプレースホルダーで、SQLインジェクション攻撃を防ぐのに役立ちます。conn.commit()
で変更をデータベースに反映させます。
このコードを実行すると、指定したIDとともに、改行を含むコメントがテーブルにインサートされます。SQLite3は改行を含むテキストデータを正しく扱うことができるので、取り出す際にも改行は保持されます。
データの確認
データが正しくインサートされたかを確認したい場合は、以下のようなクエリを実行できます:
# データの確認 cursor.execute("SELECT * FROM test") rows = cursor.fetchall() for row in rows: print(f"ID: {row}") print(f"Comment:\n{row}") print("-" * 20)
このコードを追加すると、インサートされたデータを表示して確認することができます。