データのクエリ
接続 の手順で接続したら、セッションオブジェクトを使用してデータをクエリできます。
マッピングクラスを使用したデータのモデル化
ORM でモデル化するテーブルのマッピングクラスを宣言します。これは"sqlalchemy.ext.declarative.declarative_base" を使って行います。データモデル内の既知のテーブルは、以下の例のように、部分的または完全にモデル化されます。import sqlalchemy.ext.declarative.declarative_base Base = declarative_base() class Tweets(Base): __tablename__ = "Tweets" Id = Column(String, primary_key=True) From_User_Name = Column(String) Text = Column(String)
query メソッドを使用したデータのクエリ
マッピングクラスが用意されている場合は、セッションオブジェクトと併用してデータソースをクエリします。エンジンをセッションにバインドしたら、以下のように、マッピングクラスをセッションのクエリメソッドに提供するだけです。
engine = create_engine("twitter:///?InitiateOAuth=GETANDREFRESH;") factory = sessionmaker(bind=engine) session = factory() for instance in session.query(Tweets).filter_by(From_User_Name="twitter"): print("Id: ", instance.Id) print("From_User_Name: ", instance.From_User_Name) print("Text: ", instance.Text) print("---------")
execute メソッドを使用したデータのクエリ
別の方法として、セッションオブジェクトは、適切なテーブルオブジェクトと一緒にexecute() メソッドを使用してクエリを実行することもできます。アクティブなセッションがあると仮定すると、以下は同様に実行可能です。
Tweets_table = Tweets.metadata.tables["Tweets"] for instance in session.execute(Tweets_table.select().where(Tweets_table.c.From_User_Name == "twitter")): print("Id: ", instance.Id) print("FullName: ", instance.Name) print("City: ", instance.BillingCity) print("---------")