始める無料で始める

単一行の挿入

SQLAlchemy で挿入を行う方法はいくつかありますが、ここでは select ステートメントと同じパターンに従う方法に絞って扱います。

この方法では、対象のテーブルを引数に取る insert ステートメントを使い、挿入したいデータは .values() メソッドにキーワード引数として渡します。たとえば、my_tablemy_col_1my_col_2 というカラムがある場合、insert(my_table).values(my_col_1=5, my_col_2="Example") は、my_col_1 が 5、my_col_2"Example" の行を my_table に作成します。

構文の違いに注意してください。既存のステートメントに where を追加する場合は、カラム名だけでなく「テーブル名」も含めます。たとえば new_stmt = old_stmt.where(my_tbl.columns.my_col == 15) のように書きます。これは、既存のステートメントが複数のテーブルを含む可能性があるためです。

一方で、insert は単一のテーブルに対してのみ行われるため、挿入時に values() を使う場合はテーブル名を含める必要はありません。例: stmt = insert(my_table).values(my_col = 10)

ここでのテーブル名は data です。テーブル構造を確認するには、コンソールで repr(data) を実行してください。

この演習はコースの一部です

Pythonで学ぶデータベース入門

コースを見る

演習の手順

  • sqlalchemy モジュールから insertselect をインポートします。
  • data テーブルに対して、name'Anna'count1amount1000.00validTrue に設定する挿入ステートメント insert_stmt を作成します。
  • connection を使って insert_stmt を実行し、結果を results に保存します。
  • 何件挿入されたか確認するために、results.rowcount 属性を出力します。
  • name'Anna' のレコードを data から取得するための select ステートメントを作成します。
  • 解答を実行して、select ステートメントの実行結果を表示します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

# Import insert and select from sqlalchemy
from sqlalchemy import ____, ____

# Build an insert statement to insert a record into the data table: insert_stmt
insert_stmt = insert(____).values(name=____, ____, ____, ____)

# Execute the insert statement via the connection: results
results = connection.execute(____)

# Print result rowcount
print(____)

# Build a select statement to validate the insert: select_stmt
select_stmt = select([data]).where(____ == ____)

# Print the result of executing the query.
print(connection.execute(select_stmt).first())
コードを編集して実行