Sqlalchemy-orm-adding-objects

提供:Dev Guides
移動先:案内検索

SQLAlchemy ORM-オブジェクトの追加

SQLAlchemy ORMの前の章で、マッピングを宣言してセッションを作成する方法を学びました。 この章では、テーブルにオブジェクトを追加する方法を学びます。

customersテーブルにマッピングされたCustomerクラスを宣言しました。 このクラスのオブジェクトを宣言し、セッションオブジェクトのadd()メソッドで永続的にテーブルに追加する必要があります。

c1 = Sales(name = 'Ravi Kumar', address = 'Station Road Nanded', email = '[email protected]')
session.add(c1)

このトランザクションは、commit()メソッドを使用してフラッシュされるまで保留されていることに注意してください。

session.commit()

以下は、顧客テーブルにレコードを追加するための完全なスクリプトです-

from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Customers(Base):
   __tablename__ = 'customers'

   id = Column(Integer, primary_key=True)
   name = Column(String)
   address = Column(String)
   email = Column(String)

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()

c1 = Customers(name = 'Ravi Kumar', address = 'Station Road Nanded', email = '[email protected]')

session.add(c1)
session.commit()

複数のレコードを追加するには、セッションクラスの* add_all()*メソッドを使用できます。

session.add_all([
   Customers(name = 'Komal Pande', address = 'Koti, Hyderabad', email = '[email protected]'),
   Customers(name = 'Rajender Nath', address = 'Sector 40, Gurgaon', email = '[email protected]'),
   Customers(name = 'S.M.Krishna', address = 'Budhwar Peth, Pune', email = '[email protected]')]
)

session.commit()

SQLiteStudioのテーブルビューは、レコードが顧客テーブルに永続的に追加されることを示しています。 次の画像は結果を示しています-

顧客テーブルレコードの追加