表太多了,由于考虑性能处理问题,使用动态配置来产生表,C,python可以保持表一致,crm部分python开发,后台应用c开发;所以写了例子,发现不行,部分代码及错误如下;请大侠们指教。
db = SQLAlchemy(app)
def gentable():
model = type("CallSpeeddial", (db.Model,),{"__tablename__":"CallSpeeddial","id":"db.Column(db.Integer, primary_key=True)","speeddial":"db.Column(db.String(64),default='')"})
return model
CallSpeeddial=gentable()
speeddial=CallSpeeddial(speeddial="1234")
db.session.add(speeddial)
db.session.commit()
错误日志:
File "/opt/venv/local/lib/python2.7/site-packages/sqlalchemy/orm/mapper.py", line 1223, in _configure_pks
(self, self.mapped_table.description))
sqlalchemy.exc.ArgumentError: Mapper Mapper|CallSpeeddial|CallSpeeddial could not assemble any primary key columns for mapped table 'CallSpeeddial'
CallSpeeddial
类定义的时候Column不能加引号吧…加了引号CallSpeeddial.id
的属性就是字符串而不是db.Column对象了。这样应该可以了
至于报错的原因,如果CallSpeeddial里面所有属性都是字符串的话,SQLAlchemy在构建ORM时当然是找不到主键的。