- 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])
bind() 方法也同样在 Model 类中定义。
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])
广告