##SQLArchemy
SQLArchemyを少し勉強して、頭の中に入らなかったのでここに書き残しておきます
###engine
どうやってDBに接続するか、設定内容を保持したものがengine
####データベースへの接続
create_engine(接続するDB,ログ出力の有効化フラグ)
###クラスの定義
####テーブルの作成
from sqlalchemy.ext import declarative #declartiveをインポート
Base = declarative.declarative_base() #Baseクラスを作成
from sqlalchemy import フィールド定義に使用するデータ型をインポート
class 派生モデルクラス(Base):
__tablename__="テーブル名" #テーブルを定義
カラム名 = Column(型,オプション)
id=Column(Integer, primary_key=True)
name=Column(String(255))
def __repr_(self):
return "<派生クラス名('型,型,型')>" % (self.カラム,self.カラム, self.カラム)
###テーブルの作成
metadataはテーブルなどの情報を登録するためのオブジェクト
Base.metadata.create_all(engine) #引数は作成したengine
##セッションを用いて操作する
SQLAlchemyはセッションを通して取得や更新を行う。値を操作するにはほぼsession.commit()を用いる
####セッションの作成
from sqlalchemy.orm import sessionmaker #インポート
Session = sessionmaker(bind=engine) #engineを関連付けしてSessionクラスを作成
session = Session() #インスタンスを作成
####トランザクション
派生したクラスのオブジェクトを生成して、session.add()の第一引数に渡す
インスタンス = クラス(カラム=値,) #クラスインスタンスの生成
session.add(インスタンス) #インスタンスをセッションに持たせる
session.add_all([インスタンス,インスタンス]) #複数の値を持たせる
session.commit() #オブジェクトの更新を反映させる
####オブジェクトの取得
query = session.query(クラス) #Queryオブジェクトの生成
for 変数 in query.all(): #すべてのオブジェクトを取得
query.get(プライマリーキー) #プライマリーキーを用いてオブジェクトを取得
query.filter(条件): #条件を付けてオブジェクトを取得
####オブジェクトの更新
インスタンス = query.get(key)
インスタンス.カラム名 = 新しい値
session.commit()
####オブジェクトの削除
インスタンス = query.get(key)
session.delete(インスタンス)
session.commit()
##まとめ
外出制限中にいくつかinputしようと思います。
もしなにかご指摘などあれば、ありがたいです。