2013-03-13 69 views
4

我運行python33的,我已經安裝了pymysql3但我需要什麼ENGINE指定在Django的設置:什麼是pymysql3相當於django.db.backends.mysql

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'. 
     'NAME': 'chris_test',      # Or path to database file if using sqlite3. 
     # The following settings are not used with sqlite3: 
     'USER': 'some_user', 
     'PASSWORD': 'some password', 
     'HOST': 'some_host',      # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 
     'PORT': '3306',      # Set to empty string for default. 
    } 
} 
+0

是否有一個原因,標準的'django.db.backends.mysql'不能使用?爲什麼你需要Django來使用PyMySQL? – voithos 2013-03-13 19:26:29

+0

因爲我不能在我的Windows機器上安裝MySQLdb,因爲不兼容的行爲和奇怪的概念(至少對Windows用戶),我應該必須安裝一個C編譯器,以便我可以使用一種語言這應該是更容易。 – 2013-03-13 19:39:40

+0

需要C編譯器來編譯Python擴展。在Python中工作很簡單,很棒 - 但並不總是很快。對於像數據庫客戶端那樣(據稱)至關重要的事情,您希望它儘可能快。 – voithos 2013-03-13 20:00:58

回答

1

的Django已經提供了一個MySQL後端。從查看PyMySQL看來,它似乎是一個通用的MySQL客戶端。您不能任意使用不同的庫來替代現有的Django後端;這些API將完全不兼容。

有,似乎provide a Django backend that uses PyMySQL internally項目,但筆者認爲,它對實驗,它一共有5次提交的,並且它沒有被自2012年更新,所以我不建議嘗試用它。

+0

感謝您的澄清......但正如你可能從上面的評論中看到的,我真的想做的是找到一種方法,因爲Django抱怨我沒有MySQLsb,但試圖安裝它只是抱怨各種的問題,我找不到MySQLdb的安裝程序,它實際上適用於64位風格的Python33。 – 2013-03-13 19:42:34

+0

看看[這個答案](http://stackoverflow.com/a/13324014/716118)。它可能有一些建議。就目前而言,MySQLdb與Python 3不兼容,所以如果你想堅持使用Python 3,你將不得不使用不同的方法。 – voithos 2013-03-13 20:07:20

+0

這個「答案」是非常無益的。它不回答這個問題。我嘗試使用Django提供的MySQL後端,但發現那種不支持Python 3的難題。其他選擇還有其他問題。 – 2014-12-18 00:51:40

3

查看django-mysql-pymysql瞭解更多信息。具體而言,

'ENGINE': 'mysql_pymysql', 

雖然這還不夠。我不得不使用this answer。如果你有一個foo Django應用程序,然後在你的`富/ 初始化的.py」,添加以下內容:

import pymysql 
pymysql.install_as_MySQLdb() 
+0

雖然我不確定是否需要'django-mysql-pymysql'(自2012年以來未維護),這看起來似乎是正確的事情。從我所知道的情況來看,你應該能夠遵循你指出的答案中的指示。 – voithos 2014-12-18 02:38:31

+1

PyMySQL不是我的第一選擇,但我已經開始使用Python 3,現在需要一個解決方案。我有點駭然的是,MySQL的生態系統還沒有準備好爲Python 3 – 2014-12-18 02:40:33

+0

幾年現在這個問題不解決。看起來像python 3只是不做MySQL(反之亦然)。我用這個電話安裝pymysql爲MySQLdb的,而且它發現它,然後barfs失蹤「不能導入名稱‘Thing2Literal’」。有修復,但它確實看起來像很好'我的MySQL已經死了。 – 2016-06-12 05:54:40