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', } }
import pymysql pymysql.install_as_MySQLdb()
python manage.py inspectdb > D:\django_test\mytestsite\quicktool\models.py
集成已有的數據庫和應用,生成models,複製到應用app的models.py中(quicktool/models.py)html
命令行結束返回無報錯即成功,quicktool的models.py 文件會自動複製生成本地環境已有數據庫的類,類名爲數據表名,繼承自models.Model,每一個類定義有數據表內的字段名python
報錯:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.Nonemysql
解決:找到Python安裝路徑下的的Python37\Lib\site-packages\django\db\backends\mysql\base.py文件,將文件中的以下代碼註釋sql
if version < (1, 3, 3): raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)
報錯:File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\backends\mysql\operations.py", line 146, in last_executed_queryshell
query = query.decode(errors='replace')
AttributeError: 'str' object has no attribute 'decode'數據庫
解決:找到所在文件代碼行,將decode改成encode便可django
在項目的manage.py所在路徑下使用命令 python manage.py shellapp
報如下錯誤信息:
AssertionError: Model quicktool.AppVersionInfo can't have more than one AutoField.ui
緣由是:第五步複製導入的數據庫的部分表裏增長了AutoField列,可是又不指定這個列做爲主鍵,全文搜索應用app的models.py文件出現models.AutoField()的地方,爲django的AutoField字段設定爲主鍵models.AutoField(primary_key=True)便可解決
再繼續使用如下命令行查詢數據url
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>
查詢結果可視化顯示在網頁,顯示以下: