SQLAlchemy经典映射器"无法为映射表组装任何主键列"尽管存在主键?

时间:2015-01-14 00:26:19

标签: python mysql sqlalchemy alembic

我正在与Alembic和SQLAlchemy合作开发一个项目,但是我在数据库中创建一个简单的条目作为测试时遇到了麻烦。我收到以下错误:

sqlalchemy.exc.ArgumentError: Mapper Mapper|Sale|sales_cache could not assemble any primary key columns for mapped table 'sales_cache'

我已经在下面的两个地方建立了主键(account_id),不知道为什么SQLAlchemy不能识别它或如何修复它?我读过的其他答案都处理了多个/没有主键的异常情况,并且已经相应地解决了,但这是一个非常香草的模型,它会一直失败。

我已经阅读了其他答案,其中大部分都涉及声明系统:

class Sale(Base):
    __tablename__ = 'sales_cache'

但是我需要使用经典的绘图系统;这里是我的映射类和模式:

class Sale(object):

    def __init__(self, notification):
        self._sale_id = self._notification.object_id
        self._account_id = self._notification.account_id

### schema.py file ###

from sqlalchemy.schema import MetaData, Table, Column
from sqlalchemy.types import (Unicode, Integer)

from database import metadata

metadata = MetaData()

sales_cache = Table('sales_cache', metadata,
    Column('account_id', Integer, primary_key=True, autoincrement=False),
    Column('sale_id', Integer, nullable=False)
)

这是我的alembic修订中的相关行:

sa.Column('account_id', sa.Integer(), primary_key=True, autoincrement=False),

我认为它可能会失败,因为我设置了self._sale_idself._account_id而不是self.sale_idself.account_id(没有下划线),但是当我尝试它时没有任何改变这样也是。

提前致谢

0 个答案:

没有答案