sqlalchemy将表反映到orm?

时间:2018-04-11 05:10:55

标签: python postgresql sqlalchemy

我使用以下内容反映了现有的sqlalchemy表:

import sqlalchemy as sa
db_engine = sa.create_engine('postgres+psycopq2://postgres:pwrd@localhost/test')
meta = sa.MetaData()
records = sa.Table('records', meta, autoload=True, autoload_with=db_engine)

现在当我尝试通过

添加数据时
from sqlalchemy.orm insert sessionmaker
Session = sessionmaker(bind=db_engine)
session = Session()

new_record = records(Col1='sdf', Col2='sdsfdadf')
session.add(new_record)
session.commit()

我的错误

TypeError: 'Table' object is not callable

不是一个可以与声明的表一样使用的反射表吗?

1 个答案:

答案 0 :(得分:1)

你必须先声明自己的模型类,正如IljaEveilä所说:

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class Records(Base):
    __table__ = sa.Table('records', meta, autoload=True, autoload_with=db_engine)

然后您可以使用新模型类Records来操作数据库:

new_record = Records(Col1='sdf', Col2='sdsfdadf')
session.add(new_record)
session.commit()