django連接Mysql中已有數據庫的方法詳解
我的Mysql中已經有瞭項目需要使用的相關數據庫,現在需要通過django來獲取Mysql裡的數據並使用,下面記錄配置django與mysql的連接過程。
(此處默認您已經建好瞭django框架,如果沒有準備好django,請參照我本篇文章
https://www.jb51.net/article/249861.htm
首先需要在項目的settings.py文件中配置mysql的連接信息:把之前配置的sqlite配置信息替換。
之前默認的數據庫配置信息如圖,是與sqlite連接的
現在我們需要替換為自己本地的Mysql信息,並連接我的ry-vue數據庫,代碼如下,相應的屬性需要對應自己的Mysql進行配置,如果不清楚請看接下來的圖片:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', # 要連接的數據庫ip 'PORT': '3306', # 數據庫連接端口,一般默認為3306 'NAME': 'ry-vue', # 已經存在的數據庫名稱 'USER': 'root', # 用戶名 'PASSWORD': '', # 用戶密碼 'OPTIONS': { 'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", } } }
Mysql的相關對應信息查看過程如圖:
就能看到對應的連接信息:
然後在settings.py同級目錄的__init__.py文件中增加下面代碼,導入mysql的配置
# coding=utf-8 import pymysql pymysql.install_as_MySQLdb()
如圖:
這時你會發現導入的pymysql有報錯,這是因為我們還沒有安裝pymysql包,根據下圖過程來進行pymysql的安裝:
等安裝成功後就不會報錯瞭。
之後導入數據庫中的表到django裡,執行下邊的命令,該命令的意思是將對應數據庫的表自動生成到models.py文件中。
python manage.py inspectdb > models.py
等幾秒或者刷新一下文件夾,就能在 manage.py 的下面出現一個 models.py,裡面包含瞭已有數據庫的所有表及結構。
可以看到第一個表是bank,與我的數據庫ry-vue裡的顯示完全一樣
之後把想要使用的表的 managed 都改成 True。比如我想要在django中操作scratch_choice_answer表裡的信息,則需要通過類名找到該表,然後修改如圖:
接著將需要用的表復制到你的程序需要使用的目錄下。 如果基本上都會用到,那就復制整個文件,比如我的register隻裡需要用到scratch_choice_answer表裡的信息,那麼我就操作如下,隻復制 class ScratchChoiceAnswer這部分的內容到需要的文件夾下就可以。
因為需要用到register這個app,再次確認一下此文件是否在settings註冊過
等到把需要的內容復制到要使用的文件夾之後,剛剛自動生成的models.py已經沒有用瞭,就可以刪除瞭,註意該文件位置是在manage.py下邊。
下次如果隻單獨使用一個表,就可以使用如下的代碼進行mysql的生成,而不需要全部進行生成,代碼如下,表示隻生成scratch_choice_answer表裡的信息。
python manage.py inspectdb scratch_choice_answer
然後隻需將上圖紅框部分的內容復制到需要的models.py裡就可以。註意要將managed 的 False 設置為 True
然後運行如下指令,該指令就是將django與數據庫進行同步,可以進行增刪改查操作。
python manage.py migrate
等顯示OK後就可以通過django對數據庫進行操作瞭。
(這時候刷新一下Mysql,會發現自動生成瞭auth_xxx和django_xxx的表,這個是django用來記錄對數據庫的一些操作的,就放那兒不用管,對整個項目的運行沒有影響)
連接成功驗證
我需要獲取一下scratch_choice_answer表裡的choice_id,如圖
則輸入代碼如下:
from register.models import ScratchChoiceAnswer answer = ScratchChoiceAnswer.objects.all().values('choice_id') print(answer)
然後運行django,(如果這時候報錯ValueError: source code string cannot contain null bytes,其實是models裡的編碼問題,解決方法:
運行django框架出現如下報錯,我出現該問題是由於數據庫編碼不正確
解決方法如下:
打開models.py,將編碼改為UTF-8
django運行成功後可以看到獲取到Mysql裡的值
大功告成!
總結
到此這篇關於django連接Mysql中已有數據庫的文章就介紹到這瞭,更多相關django連接Mysql數據庫內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- django如何根據現有數據庫表生成model詳解
- 關於django連接mysql數據庫並進行數據庫的創建的問題
- Django把SQLite數據庫轉換為Mysql數據庫的過程
- Django創建項目+連通mysql的操作方法
- Django一小時寫出賬號密碼管理系統