peewee 乙個輕量級的ORM 四

2021-06-09 22:19:28 字數 3164 閱讀 8018

class database

last_insert_id

(cursor, model)

parameters:

return type:

最後乙個插入的記錄的那行的主鍵,不一定非得叫『id'

rows_affected

(cursor

)return type:

受影響的行數

create_table

(model_class

[, safe=false])

parameters:

create_index

(model_class,

field_names

[, unique=false])

parameters:

create_foreign_key

(model_class,

field

)parameters:

drop_table

(model_class

[, fail_silently=false])

parameters:

note

目前這個版本(1.0)還沒有能實現級連刪表。

add_column_sql

(model_class,

field_name

)parameters:

return type:

sql suitable for adding the column

note

如果新增乙個不允許為空的字段將引起異常integrityerror.

rename_column_sql

(model_class,

field_name,

new_name

)parameters:

return type:

sql suitable for renaming the column

note

現欄位名必須是存在

note

sqlite 目前暫時不支援

drop_column_sql

(model_class,

field_name

)parameters:

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

class

sqlitedatabase

(database

) 「sqlite3」模組驅動

class

mysqldatabase

(database

)「mysqldb」 模組驅動

class

postgresqldatabase

(database

)「psycopg2」 模組驅動

後面還有一些工具。比如pwiz

如果我們的專案中有一些資料表是已經建立了的,那我們怎麼使用呢。

pwiz這個指令碼能夠幫我們分析已經資料庫中的表資訊,並構造出class,使用pwiz時的一些引數。

option

meaning

example

-hshow help

-edatabase backend

-e mysql

-hhost to connect to

-h remote.db.server

-pport to connect on

-p 9001

-udatabase user

-u postgres

-pdatabase password

-p secret

-spostgres 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', **)

class unknownfieldtype(object):

pass

class basemodel(model):

class meta:

database = database

class job(basemodel):

name = charfield()

class meta:

db_table = 'job'

peewee 超輕量級ORM運算元據庫

多條刪除,返回值為刪除的條數 1 delete instance tusermission.delete where tusermission.mission code mission code execute 單條刪除 2 name tusermission.get user name zhang...

DI php寫乙個輕量級的容器

摘要 理解什麼是di ioc,依賴注入 控制反轉。兩者說的是乙個東西,是當下流行的一種設計模式。大致的意思就是,準備乙個盒子 容器 事先將專案中可能用到的類扔進去,在專案中直接從容器中拿,也就是避免了直接在專案中到處new,造成大量耦合。取而代之的是在專案類裡面增設 setdi 和getdi 方法,...

乙個輕量級AOP的實現(開源)

事先宣告,本專案參考aop in c 和園內大神張逸的文章,思路神馬的都不是自己的!為了讓專案的 看起來更乾淨,需要乙個aop!於是就實現了乙個非常簡單的,非常輕量級,有多輕量級呢?實現的aop叫做earthworm 蚯蚓,為什麼叫這個?因為它小,它會疏通!專案的本意也是這樣,所以就叫這個!命名空間...