我有这个MySQL表:
CREATE TABLE `affiliations` (
`affiliation_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(333) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`affiliation_id`),
UNIQUE KEY `name_UNIQUE` (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
和这个模型:
class Affiliation(Base):
__tablename__ = 'affiliations'
__table_args__ = {'autoload : True'}
def __init__(self, **kwargs):
for k, v in kwargs.iteritems():
setattr(self, k, v)
def __repr__(self):
return 'Affiliation({name!r}'.format(name=self.name)
当我发起
session = database.get_session(engine)
aff = session.query(Affiliation).first()
print repr(aff)
SQLAlchemy返回此错误:
sqlalchemy.exc.ArgumentError: Mapper Mapper|Affiliation|affiliations could not assemble any primary key columns for mapped table 'affiliations'
我已经多次将模型重写为数据库,重复检查每个名称,更改了列,但我无法找到SQLAlchemy抱怨的原因。 正如您在表格CREATE STATEMENT
中看到的那样,定义了一个主键。为什么SQLAlchemy不能找到它?
我已经等价地定义了其他表,但代码效果很好。