MySQL Connector/Python於django中的設定

作者:吳修福
精誠資訊 恆逸教育訓練中心 資深講師
技術分類:程式設計

django算是Python應用在Web開發時最著名的Framework之一;而MySQL也是最知名的Open Source關聯式資料庫管理系統的一員。因此,兩者一起搭配來開發Web應用程式應該是很常見的方式。

直接利用MySQL Connector/Python(以下簡稱Connector)的API連接資料庫當然是可以,但是這樣就無法充分利用django在資料庫連接這邊的好處。但是無奈的是,並不是直接按照文件說明設定就可以用,我們必須調整一下Connector的程式碼及一點django的設定。

先說明一下環境:

  • Python 3.5.1
  • django 1.10.1
  • mysql-connector 2.1.4
  • MySQL Server 5.7

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 設定資料庫時就可以順利運作了。

Share |

您可在下列課程中了解更多技巧喔!

相關學習資源

【Python】Python程式設計