1. 学ぶ
  2. /
  3. コース
  4. /
  5. Pythonで学ぶデータベース入門

Connected

演習

単一行の挿入

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

この方法では、対象のテーブルを引数に取る insert ステートメントを使い、挿入したいデータは .values() メソッドにキーワード引数として渡します。たとえば、my_table に my_col_1 と my_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) を実行してください。

指示

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