2017-01-19 76 views
4

我正在使用peewee訪問SQLite數據庫。peewee模型會自動關閉連接嗎?

我已經做了model.py,如:

from peewee import * 

db = SqliteDatabase('people.db') 

class Person(Model): 
    name = CharField() 
    birthday = DateField() 
    is_relative = BooleanField() 

    class Meta: 
     database = db 

在另一個Python文件(import model),然後我操縱DB與像Person.create()Person.select(name=='Joe').delete_instance()電話。

Quickstart說在最後呼籲db.close()關閉連接。這也適用於我的情況嗎?我應該打電話給model.db.close()嗎?

+0

可我知道is_relative屬性將做(有什麼用呢)...? – shiva

回答

0

您可以打開和關閉手動連接:

在你的情況(與db = SqliteDatabase('people.db')

您建立與數據庫的連接:

db.connect() 

下次你做任何你想要的數據庫,最後你關閉連接:

db.close() 
0

根據Charles Leifer,peewee的製造商程序員的工作是終止連接。有關連接池的文檔告訴,所有連接都是線程本地的,所以只要模型正在使用,連接保持打開並且死亡,如果包含事務的線程連接主線程。

Charles明確回答了關於連接池的問題。答案是有點一般化,但我想這也適用於同樣的所有連接:About connection pool

的話題隱答案:

雖然:

Error 2006: MySQL server has gone away

從文檔Quickstart Page摘錄沒有必要明確地打開連接,這是很好的做法,因爲它會立即顯示與數據庫連接的任何錯誤,而不是稍後的任意時間,當第一個查詢是ex ecuted。 當您完成時,關閉連接也是很好的事情 - 例如,Web應用程序在接收到請求時可能會打開連接,並在發送響應時關閉連接。

最後回答你的問題是,基於這些信息:第