結論
- addした後にflushすると、addしたオブジェクトに設定されている。
- 【未確認】exuecuteで実行する場合には返り値から取得できる?(参考)
環境
コード
from sqlalchemy import Column
from sqlalchemy.dialects.mysql import INTEGER,TEXT
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
Base = declarative_base()
class tablea(Base):
"""テーブルの定義"""
__tablename__ = 'tablea'
id = Column(INTEGER, primary_key=True)
id2 = Column(INTEGER, primary_key=True, autoincrement=True)
name = Column(TEXT)
if __name__ == "__main__":
url = 'mysql+pymysql://user:password@hostname/dbname?charset=utf8'
engine = create_engine(url, echo=True)
engine.execute('DROP TABLE IF EXISTS {}'.format("tablea"))
Base.metadata.create_all(engine)
Session = sessionmaker(bind=engine)
session = Session()
tablea1 = tablea(id=100, name='太郎')
tablea2 = tablea(id=200, name='次郎')
session.add(tablea1)
session.add(tablea2)
print('add後のid2の値')
print(tablea1.id2)
print(tablea2.id2)
session.flush()
print('flush後のid2の値')
print(tablea1.id2)
print(tablea2.id2)
print("全件出力")
for row in session.query(tablea).all():
print(row.id, row.id2, row.name)