Python 如何根据需要定义炼金术对象?

Python 如何根据需要定义炼金术对象?,python,class,sqlalchemy,runtime,Python,Class,Sqlalchemy,Runtime,我有一个模块,我想用它来处理对生产数据库和测试数据库的数据库访问 内容如下所示: class FirstModel(db.Model): #... class SecondModel(db.Model): #... def get_production_connection(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = PRODUCTION_DATABASE_URI db

我有一个模块,我想用它来处理对生产数据库和测试数据库的数据库访问

内容如下所示:

class FirstModel(db.Model):
    #...
class SecondModel(db.Model):
    #...

def get_production_connection():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = PRODUCTION_DATABASE_URI
    db = SQLAlchemy(app)
    return db

def get_test_connection():
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] = TEST_DATABASE_URI
    db = SQLAlchemy(app)
    return db
不幸的是,这不起作用,因为定义的模型继承自
db.Model
,在计算类时,它显然没有定义。有什么方法可以使类/模型从db.Model类继承,当调用上述方法之一时,该类只能通过
db
对象访问

我现在通过以下方式解决了这个问题:

db = SQLAlchemy()

#models here

def create_app():
    app = Flask(__name__)
    #db configuration
    db.init_app(app)
    return db

如图所示

如果我弄错了,请纠正我的错误:您有一个应用程序正在生产环境中运行,在某些时候您希望访问生产数据库,有时还想测试数据库,对吗?我不熟悉SQLAlchemy,但也许您可以从SQLAlchemy.Model继承?@cemkyg:我有一些单元测试应该访问测试数据库,而生产代码应该访问生产数据库。我可以通过创建两个模块来解决这个问题,一个用于生产,另一个用于测试,在初始化时在所有模型定义之前在其中创建一个db对象-但是我必须定义所有模型两次,这对我来说是不可取的。@VaughnCato我将尝试一下。似乎没有SQLAlchemy.model-至少在烧瓶中没有我用的是包装版,没错。你能接受答案吗?这样就不会在未回答的问题中突然出现?谢谢你的提示-接受我自己的答案仍然会被阻止几个小时。