1. 程式人生 > >Django web框架-----Django連接本地現有mysql數據庫

Django web框架-----Django連接本地現有mysql數據庫

同名 ase 創建數據庫 路徑 get 結果 導入 ldb sha

  • 第一步:win10下載mysql5.7壓縮包配置安裝mysql,創建數據庫或導入數據庫
  • 第二步:win10搭建django2.1.7開發環境,創建項目為mytestsite,創建應用app為quicktool
  • 第三步:編輯與項目同名的文件夾的配置文件(mytestsite/settings.py),配置數據庫信息
DATABASES = {
    ‘default‘: {
        # ‘ENGINE‘: ‘django.db.backends.sqlite3‘,
        # ‘NAME‘: os.path.join(BASE_DIR, ‘db.sqlite3‘),
          ‘ENGINE‘:‘django.db.backends.mysql‘,
          ‘NAME‘:‘數據庫名稱‘,
          ‘USER‘:‘數據庫賬號‘,
          ‘PASSWORD‘:‘數據庫密碼‘,
          ‘HOST‘:‘數據庫地址,本地的話即為localhost‘,
          ‘PORT‘:‘數據庫端口,默認為3306‘,
    }
}
  • 第四步:編輯與項目同名的文件夾的__init__.py文件(mytestsite/__init__.py),引入mysql數據庫
import pymysql
pymysql.install_as_MySQLdb()
  • 第五步:在項目的manage.py所在路徑下使用命令
python manage.py inspectdb  >  D:\django_test\mytestsite\quicktool\models.py 

集成已有的數據庫和應用,生成models,復制到應用app的models.py中(quicktool/models.py)

命令行結束返回無報錯即成功,quicktool的models.py 文件會自動復制生成本地環境已有數據庫的類,類名為數據表名,繼承自models.Model,每個類定義有數據表內的字段名

  • 第六步:使用Django shell查詢數據表並返回結果

在項目的manage.py所在路徑下使用命令 python manage.py shell

報以下錯誤信息:
AssertionError: Model quicktool.AppVersionInfo can‘t have more than one AutoField.

技術分享圖片

原因是:第五步復制導入的數據庫的部分表裏增加了AutoField列,但是又不指定這個列作為主鍵,全文搜索應用app的models.py文件出現models.AutoField()的地方,為django的AutoField字段設定為主鍵models.AutoField(primary_key=True)即可解決

再繼續使用以下命令行查詢數據

python manage.py shell
from quicktool.models import AppVersionInfo
AppVersionInfo.objects.get(version_code=10)

數據庫裏有表AppVersionInfo和字段version_code

CREATE TABLE `app_version_info` (version_code` int(3) NOT NULL DEFAULT ‘0‘)

查詢結果打印的是id值,並沒有顯示出具體相關數據表的信息

技術分享圖片

在quicktool/models.py文件中的每個類增加以下代碼即可解決打印問題

def __str__(self):
    # 在Python3中使用  def __unicode__(self):
    return self.url

新增方法後,打印的是數據表的具體數據

技術分享圖片

  • 第七步:將查詢的結果可視化到網頁上

quicktool/views.py文件:

from django.http import HttpResponse
from quicktool.models import AppVersionInfo
def index(request):
    appl = AppVersionInfo.objects.get(version_code=25)
    return HttpResponse(str(appl))

mytestsite/mytestsite/urls.py文件的路徑,其余省略:

from quicktool import views as quicktool_views   # 新增
urlpatterns = [
    path(‘‘, quicktool_views.index, name=‘home‘),  # 新增
]

quicktool/templates/home.html文件的body,其余省略:

<body>
{{ appl }}
</body>

查詢結果可視化顯示在網頁,顯示如下:

技術分享圖片

Django web框架-----Django連接本地現有mysql數據庫