注:あなたは
stations = connection.execute(s).fetchone()
初期stations
Table
対象文の後ので、あなたのケースで異なるオブジェクトに同じ名前を与えないようにする必要がありはアクセスできなくなります。フェッチされたオブジェクトの名前をstation_record
に変更するか、stations
Table
オブジェクトの名前をstations_table
に変更するか、またはその両方に変更できます。あなたは、レコードのid
を取得したい場合は
回答
- あなたはそれを照会するよりも:
s = select([stations.c.id, stations.c.name]).where(stations.c.name == station_name)
または
s = select(stations.columns).where(stations.c.name == station_name)
を最後に、我々は
のようなものを持つことができます
from sqlalchemy import MetaData, Table, Column, Integer, String, create_engine, select
db_uri = 'sqlite://'
engine = create_engine(db_uri)
metadata = MetaData(bind=engine)
stations = Table('stations', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(16), nullable=False)
)
stations.create(checkfirst=True)
connection = engine.connect()
station_name = 'sample text'
connection.execute(stations.insert().values(name=station_name))
s = select(stations.columns).where(stations.c.name == station_name)
station_record = connection.execute(s).fetchone()
station_record_id = station_record['id']
station_record_name = station_record['name']
['Table'](http://docs.sqlalchemy.org/en/latest/core/metadata.html#sqlalchemy.schema.Table)オブジェクト定義 –
をここに追加してください。 – StephenChen
[RDBMS](https://en.wikipedia.org/wiki/Relational_database_management_system)はあなたが使っていますか? –