python sqlalchemy mysql,以下语句,根据已存在的表名,动态生成对应的Model。出现错误提示sqlalchemy.exc.InvalidRequestError: Table 't_s_sendlist' is already defined for this MetaData instance. Specify 'extend_existing=True' to redefine options and columns on an existing Table object.
def generate_sendlistmodel_from_table_name(table_name):
model_attributes={
'__tablename__': table_name,
'id':db.Column(db.Integer, primary_key=True, autoincrement=True),
# user:db.Column(db.String(20), nullable=False), #从 s_Task_list 获取
'phone':db.Column(db.String(11), nullable=False), # 号码
'phone_area':db.Column(db.String(50), nullable=True), # 区域
'phone_operator':db.Column(db.String(20), nullable=True), # 运营商
# sms_text:db.Column(db.String(1000), nullable=True) , #从 s_Task_list 获取
'sms_billing_this':db.Column(db.Integer, nullable=True) , # 计费条数/条
'sms_msgid':db.Column(db.String(20), nullable=True), # 用于判断 对应关系
# s_channel:db.Column(db.String(20), nullable=True) , #从 s_Task_list 获取
's_back_channel':db.Column(db.String(20), nullable=True, index=True) , # 后台通道
# s_bottom_account:db.Column(db.String(20), nullable=True) , #底层帐号,不需要在此,应在通道配置时用到
's_send_time_this':db.Column(db.DateTime, index=True) , # 发送时间
's_finished_time_this':db.Column(db.DateTime), # 完成时间
# s_finished_time_this':db.Column(db.DateTime(timezone=True)) , # 完成时间
's_state_time':db.Column(db.DateTime), # 状态获取时间,状态获取时的时间点
# s_submit_state':db.Column(db.String(20), nullable=True) , #提交状态,对任务
's_state_gateway':db.Column(db.String(20), nullable=True), # 网关状态
's_state':db.Column(db.String(20), nullable=True), # 最后状态 成功、失败、无
's_state_for_more':db.Column(db.String(20), nullable=True) , # 状态更多描述
'sms_text':db.Column(db.String(1000), nullable=True), # 从 s_Task_list 获取
's_submit_time_this':db.Column(db.DateTime, index=True), # 提交时间,提交时填上
'discontinue':db.Column(db.Integer) ,# 中止。 当用户已提交后,在任务清单界面,点击按键进行中止任务
'resend_backup':db.Column(db.Integer) , # 标识 None:原始状态; 1: 为 重发前备份的记录 2: 重发前备份的发送记录 3: 新增一条的记录,用于触发SRS.sms_send
'status_read':db.Column(db.Integer), # 状态已读 /未读, 1 为已读
# 屏蔽。需要时让动态计入。 cmpp_sendlists':db.relationship("cmpp_Send_list", backref='s_sendlist') # 不会在数据库出现
}
model = type(table_name.capitalize(), (db.Model,), model_attributes)
print("在 generate_sendlistmodel_from_table_name里面")
print(model.__name__)
print(model.__tablename__)
return model
tablelist = ['t_s_senst']
print("打印模型的表名")
model_conditions_list=[]
for tablename in tablelist:
model_conditions=[]
model = generate_sendlistmodel_from_table_name(tablename)
print(model.__tablename__)
print(model)
model_conditions.append(model)
conditions=[]
model_conditions.append(conditions)
model_conditions_list.append(model_conditions)