<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
我的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資料庫內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45