django算是Python應用在Web開發時最著名的Framework之一;而MySQL也是最知名的Open Source關聯式資料庫管理系統的一員。因此,兩者一起搭配來開發Web應用程式應該是很常見的方式。
直接利用MySQL Connector/Python(以下簡稱Connector)的API連接資料庫當然是可以,但是這樣就無法充分利用django在資料庫連接這邊的好處。但是無奈的是,並不是直接按照文件說明設定就可以用,我們必須調整一下Connector的程式碼及一點django的設定。
先說明一下環境:
django與mysql-connector可以利用pip安裝。
首先是django中settings.py的設定:
DATABASES = { 'default': { 'ENGINE': 'mysql.connector.django', 'NAME': 'mydjango', 'USER': 'root', 'PASSWORD': '1234', 'HOST': '127.0.0.1', 'PORT': '3306', } } # ... USE_TZ = False
接下來找出 mysql-connector 中的程式碼,位於 mysql/connector/django/operations.py 中 bulk_insert_sql function:
def bulk_insert_sql(self, fields, num_values): items_sql = "({0})".format(", ".join(["%s"] * len(fields))) return "VALUES " + ", ".join([items_sql] * num_values)
將上面的程式改為以下的內容:
def bulk_insert_sql(self, fields, num_values): items_sql = "({0})".format(", ".join(["%s"] * len(fields))) values_sql = ", ".join(items_sql % values for values in num_values) return "VALUES " + values_sql
這樣在執行django的migrate 設定資料庫時就可以順利運作了。
您可在下列課程中了解更多技巧喔!
相關學習資源
【Python】Python程式設計