第一步: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.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.3 or newer is required; you have 0.7.11.None
解决: 找到Python安装路径下的的Python37\Lib\site-packages\django\db\backends\mysql\base.py文件, 将文件中的如下代码注释
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_query query = query.decode(errors='replace') AttributeError: 'str' object has no attribute 'decode'
解决: 找到所在文件代码行,将decode改为encode即可
第六步:使用Django shell查询数据表并返回结果
在项目的manage.py所在路径下使用命令 python manage.py shell
报以下错误信息: AssertionError: Model quicktool.AppVersionInfo can't have more than one AutoField.
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值,并没有显示出具体相关数据表的信息
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>
复制代码
查询结果可视化显示在网页,显示如下: