如何根据条件使用两种不同的模式?

时间:2018-08-17 14:52:51

标签: python flask marshmallow

我有一个具有以下属性的DatabaseConnection模式: db_typedb_connection_details

现在,对于我的flask应用程序,我支持两种数据库类型:mysql和postgresql,并且我有两个不同的模式,它们都属于db_connection_details模式,具有不同的字段。

现在,在DatabaseConnection模式中,可以根据db_type指定要选择的模式。谢谢!

编辑:

输入示例如下:

"training_data": {
      "source": "mysql",
      "connection_details": {
        "a": "",
        "b": ""
      }
}

DatabaseConnection模式:

class DatabaseConnection(Schema):
    source = fields.String(required=True)
    connection_details = fields.Nested(ConnectionSchema, required=True)

现在,mysql模式具有ab字段(如示例中所示),而postgres模式具有其他字段cd。如果源是mysql数据库,则应选择MySqlConnectionSchema,如果源是PostgreSQL数据库,则应选择PostgresConnectionSchema(代替{中的ConnectionSchema字段{1}}模式)。棉花糖有可能吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过继承模式并动态选择?这样的事情。我还没有尝试过或测试过它,只是一个想法。

class MySql(object):
     a = 1
     b = 2

class Postgres(object):
     a = 1
     b = 2
     c = 3
     d = 4

if _conn = 'mySql':
    SubClass = MySql
else:
    SubClass = Postgres

class DatabaseConnection(Schema, SubClass):
    ...