如何基于一个条件使用两个不同的模式?

2024-10-01 04:55:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有以下属性的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(代替DatabaseConnection模式中的ConnectionSchema字段)。这在棉花糖里可能吗


Tags: 数据库true示例sourcefieldsdb属性postgresql
1条回答
网友
1楼 · 发布于 2024-10-01 04:55:58

您是否尝试过对模式进行子类化和动态选择?像这样的。我没试过也没试过,所以只是个主意

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):
    ...

相关问题 更多 >