class Database
last_insert_id(cursor, model)
-
Parameters: - cursor – the database cursor used to perform the insert query
-
model –
Return type: 最后一个插入的记录的那行的主键,不一定非得叫‘id'
- rows_affected ( cursor )
-
Return type: 受影响的行数
- create_table ( model_class [, safe=False ] )
-
Parameters: - model_class –要创建的表所代表的Model
-
safe – 如果设置为True,会自动检查该表是否存在,存则不创建了
- create_index ( model_class, field_names [, unique=False ] )
-
Parameters: -
model_class – Model
- field_name –要创建的索引的字段名,可以是字符串或list
- unique –是否将索引设置为唯一
-
model_class – Model
- drop_table ( model_class [, fail_silently=False ] )
-
Parameters: -
model_class – Model
- fail_silently –设置为真,则会检查是否存在该表,是则删
Note
目前这个版本(1.0)还没有能实现级连删表。
-
model_class – Model
- add_column_sql ( model_class, field_name )
-
Parameters: -
model_class – Model
-
field_name (string) – 想要添加的字段
Return type: SQL suitable for adding the column
Note
如果添加一个不允许为空的字段将引起异常IntegrityError.
-
model_class – Model
- rename_column_sql ( model_class, field_name, new_name )
-
Parameters: - model_class – Model instance
- field_name (string) – 现字段名
-
new_name (string) – 新字段名
Return type: SQL suitable for renaming the column
Note
现字段名必须是存在
Note
SQLite 目前暂时不支持
- drop_column_sql ( model_class, field_name )
-
Parameters: - model_class – Model instance
-
field_name (string) –
Note
SQLite 暂时不支持
- create_sequence ( sequence_name )
-
Parameters: sequence_name – name of sequence to create 如果你的数据库引擎支持 sequences才可以用
- drop_sequence ( sequence_name )
-
Parameters: sequence_name – name of sequence to drop 同上,你的数据库必须支持sequences
- get_indexes_for_table ( table )
-
Parameters: table – the name of table to introspect Return type: a list of (index_name,is_unique) tuples 在Database的子类中实现
- get_tables ( )
-
Return type: a list of table names in the database 在Database子类中实现。
- sequence_exists ( sequence_name )
-
Rtype boolean:
目前,实现了的Database子类有三个;SqliteDatabase、MySQLDatabase、PostgresqlDatabase
后面还有一些工具。比如pwiz
如果我们的项目中有一些数据表是已经创建了的,那我们怎么使用呢。
pwiz这个脚本能够帮我们分析已经数据库中的表信息,并构造出class,使用pwiz时的一些参数。
Option | Meaning | Example |
---|---|---|
-h | show help | |
-e | database backend | -e mysql |
-H | host to connect to | -H remote.db.server |
-p | port to connect on | -p 9001 |
-u | database user | -u postgres |
-P | database password | -P secret |
-s | postgres schema | -s public |
gauss@gauss:/usr/local/lib/python2.7/dist-packages$ python pwiz.py -u 'root' -P 'gauss' -e mysql test >my_models.py
利用pwiz分析我的test数据库,然后自动生成了下面这个文件,在我们要使用到这些表的时候引入即可。
from peewee import *
database = MySQLDatabase('test', **{'passwd': 'gauss', 'user': 'root'})
class UnknownFieldType(object):
pass
class BaseModel(Model):
class Meta:
database = database
class Job(BaseModel):
name = CharField()
class Meta:
db_table = 'job'