3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

SQLArchemyの基本的な構文など

Posted at

##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しようと思います。
もしなにかご指摘などあれば、ありがたいです。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?