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)
このコードを追加すると、インサートされたデータを表示して確認することができます。