- Peewee教程
- Peewee - 主页
- Peewee - 概述
- Peewee - 数据库类
- Peewee - 模型
- Peewee - 野外课程
- Peewee - 插入新记录
- Peewee - 选择记录
- Peewee - 过滤器
- Peewee - 主键和复合键
- Peewee - 更新现有记录
- Peewee - 删除记录
- Peewee - 创建索引
- Peewee - 约束
- Peewee - 使用 MySQL
- Peewee - 使用 PostgreSQL
- Peewee - 动态定义数据库
- Peewee - 连接管理
- Peewee - 关系与加入
- Peewee - 子查询
- Peewee - 排序
- Peewee - 计数和聚合
- Peewee - SQL 函数
- Peewee - 检索行元组/字典
- Peewee - 用户定义的运算符
- Peewee - 原子事务
- Peewee - 数据库错误
- Peewee - 查询生成器
- Peewee - 与 Web 框架集成
- Peewee - SQLite 扩展
- Peewee - PostgreSQL 和 MySQL 扩展
- Peewee - 使用 CockroachDB
- Peewee有用资源
- Peewee - 快速指南
- Peewee - 有用的资源
- Peewee - 讨论
Peewee - 动态定义数据库
如果您的数据库计划在运行时发生变化,请使用DatabaseProxy帮助程序更好地控制初始化它的方式。DatabaseProxy 对象是一个占位符,借助它可以在运行时选择数据库。
在以下示例中,根据应用程序的配置设置选择适当的数据库。
from peewee import * db_proxy = DatabaseProxy() # Create a proxy for our db. class MyUser (Model): name=TextField() city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")]) age=IntegerField() class Meta: database=db_proxy db_table='MyUser' # Based on configuration, use a different database. if app.config['TESTING']: db = SqliteDatabase(':memory:') elif app.config['DEBUG']: db = SqliteDatabase('mydatabase.db') else: db = PostgresqlDatabase( 'mydatabase', host='localhost', port=5432, user='postgres', password='postgres' ) # Configure our proxy to use the db we specified in config. db_proxy.initialize(db) db.connect() db.create_tables([MyUser])
您还可以在运行时使用数据库类和模型类中声明的bind()方法将模型关联到任何数据库对象。
以下示例使用数据库类中的bind()方法。
from peewee import * class MyUser (Model): name=TextField() city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")]) age=IntegerField() db = MySQLDatabase('mydatabase', host='localhost', port=3306, user='root', password='') db.connect() db.bind([MyUser]) db.create_tables([MyUser])
Model 类中也定义了相同的bind() 方法。
from peewee import * class MyUser (Model): name=TextField() city=TextField(constraints=[SQL("DEFAULT 'Mumbai'")]) age=IntegerField() db = MySQLDatabase('mydatabase', host='localhost', port=3306, user='root', password='') db.connect() MyUser.bind(db) db.create_tables([MyUser])