2011-11-20 28 views
4

如果在一個python \ django的節目的開始予加載執行原始自定義SQL命令如單MySQL的會話

from django.db import connection 
cursor = connection.cursor() 
cursor.execute("SET SESSION wait_timeout=2147483") 

從而改變一個會話變量的模塊,將它適用於所有剩餘的程序運行?即模塊與同一個python \ django進程中運行的其他代碼在同一個MySQL會話中?

回答

7

不可靠。

正確的方法做,這是對OPTIONS字典的數據庫設置中使用init_command

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     ... 
     'OPTIONS': { 
      'init_command': '"SET SESSION wait_timeout=2147483', 
     }, 
    } 
} 
+0

丹尼爾,你能解釋一下爲什麼「不可靠」? – Jonathan

+0

因爲Django中'start'沒有任何概念。一個新的進程可以隨時由服務器本身啓動,而且目前還沒有任何掛鉤與此進程掛鉤。 –