テーブルからのデータ選択:生の SQL
動画で見たとおり、データベース内のデータにアクセスして操作するには、まずエンジンに対して .connect() メソッドを使って接続を確立する必要があります。これは、これまでに使った create_engine() 関数がエンジンのインスタンスを返すだけで、クエリのように接続を必要とする処理が呼び出されるまで、実際の接続は開かれないためです。
先ほど学んだ SQL を使い、接続に対して .execute() メソッドを適用することで、生の SQL クエリを用いて census テーブルの全レコードを取得できます。.execute() メソッドが返すオブジェクトは ResultProxy です。この ResultProxy に対して .fetchall() メソッドを使うと、結果、つまり ResultSet を取得できます。
この演習では、従来の SQL クエリを使います。生の SQL でクエリを実行する場合は、テーブルをデータベース内で直接クエリすることに注意してください。特に、リフレクションの手順は不要です。
次の演習では、SQLAlchemy に進み、その利点を理解していきます。さっそく始めましょう!
この演習はコースの一部です
Pythonで学ぶデータベース入門
演習の手順
engineの.connect()メソッドを使って接続を作成します。censusからすべての列を取得する SQL 文を作成してstmtに保存します。SQL 文は文字列である必要があります。connectionに対して.execute()と.fetchall()を使用し、結果をresultsに保存します。.execute()が.fetchall()より先であること、そして.execute()にstmtを渡すことを忘れないでください。resultsを出力します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
from sqlalchemy import create_engine
engine = create_engine('sqlite:///census.sqlite')
# Create a connection on engine
connection = ___
# Build select statement for census table: stmt
stmt = ____
# Execute the statement and fetch the results: results
results = ____
# Print results
print(____)