peewee 动态定义数据库

来源:互联网 发布:java调用wsdl接口 cxf 编辑:程序博客网 时间:2024/06/14 12:40

Dynamically defining a database

For even more control over how your database is defined/initialized, you can use the Proxy helper. Proxy objects act as a placeholder, and then at run-time you can swap it out for a different object. In the example below, we will swap out the database depending on how the app is configured:
database_proxy = Proxy()  # Create a proxy for our db.class BaseModel(Model):    class Meta:        database = database_proxy  # Use proxy for our DB.class User(BaseModel):    username = CharField()# Based on configuration, use a different database.if app.config['DEBUG']:    database = SqliteDatabase('local.db')elif app.config['TESTING']:    database = SqliteDatabase(':memory:')else:    database = PostgresqlDatabase('mega_production_db')# Configure our proxy to use the db we specified in config.database_proxy.initialize(database)

Warning

Only use this method if your actual database driver varies at run-time. For instance, if your tests and local dev environment run on SQLite, but your deployed app uses PostgreSQL, you can use the Proxy to swap out engines at run-time.

However, if it is only connection values that vary at run-time, such as the path to the database file, or the database host, you should instead use Database.init(). See Run-time database configuration for more details.


0 0