Django web框架-----Django连接本地现有mysql数据库
- 第一步: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.
原因是:第五步复制导入的数据库的部分表里增加了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数据库的更多相关文章
- Django web框架-----Django templates模板
说明:mytestsite是django框架下的项目,quicktool是mytestsite项目中的应用 一般的变量之类的用 {{ }}(变量),功能类的比如循环.条件判断是用 {% %}(标签) ...
- 教程:Visual Studio 中的 Django Web 框架入门
教程:Visual Studio 中的 Django Web 框架入门 Django 是高级 Python 框架,用于快速.安全及可扩展的 Web 开发. 本教程将在 Visual Studio 提供 ...
- [oldboy-django][1初始django]web框架本质 + django框架 + ajax
web框架本质 浏览器(socket客户端) - 发送请求(ip和端口,url http://www.baidu.com:80/index/) - GET 请求头(数据请求行的url上: Http1. ...
- python运维开发(十七)----jQuery续(示例)web框架django
内容目录: jQuery示例 前端插件 web框架 Django框架 jQuery示例 dom事件绑定,dom绑定在form表单提交按钮地方都会绑定一个onclick事件,所有查看网站的人都能看到代码 ...
- Web框架——Django笔记
Web框架--Django笔记 MVC和MTV MVC:Model.View.Controller MTV:Model.Template.View Django--MTV 1.创建Django程序 ...
- Python3.5学习十八 Python之Web框架 Django
Python之Web框架: 本质:Socket 引用wsgiref创建web框架 根据web框架创建过程优化所得: 分目录管理 模板单独目录 执行不同函数单独存入一个方法py文件 Web框架的两种形式 ...
- 基于Ubuntu Server 16.04 LTS版本安装和部署Django之(四):安装MySQL数据库
基于Ubuntu Server 16.04 LTS版本安装和部署Django之(一):安装Python3-pip和Django 基于Ubuntu Server 16.04 LTS版本安装和部署Djan ...
- 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库
说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...
- R语言使用RMySQL连接及读写Mysql数据库 测试通过
R语言使用RMySQL连接及读写Mysql数据库 简单说下安装过程,一般不会有问题,重点是RMySQL的使用方式. 系统环境说明 Redhat系统:Linux 460-42.6.32-431.29.2 ...
随机推荐
- LNMP分离式部署
#### LNMP组合工作流程 在LNMP组合工作时,首先是用户通过浏览器输入域名请求Nginx Web服务,如果请求是静态资源,则由Nginx解析返回给用户:如果是动态请求(.php结尾),那么Ng ...
- jquery的输入框自动补全功能+ajax
jquery的输入框自动补全功能+ajax 2017年05月10日 18:51:39 辣姐什么鬼 阅读数:1461 标签: web前端 更多 个人分类: web前端 内容参考网友文章写成,原博的链 ...
- django--orm对象关系映射之常用的增删改查
1.查询表里所有数据 book=models.Book.objects.all() 2.条件查询 book = models.Book.objects.filter(id=1).first() # 查 ...
- sitecore 获取item的URL
给出一个简单的sitecore项: Item item; 该项目本身不包含它的网址.要获取项目的URL,您需要调用static类Sitecore.Links.LinkManager string ur ...
- parse
import Parse from 'parse'; import { AsyncStorage } from 'react-native'; // 创建新的子类 var GameScore = Pa ...
- 第十二节 JS事件高级应用
事件绑定: IE方式:(仅适用于IE9及以下,其他的比如FF.Chrome.IE11都不适用) attachEvent(事件名称, 函数):绑定事件处理函数 detachEvent(事件名称, 函数) ...
- Oracle SQL语句之常见优化方法总结--不定更新
1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.WHERE子句中的连接顺序: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理, ...
- random shutil shevle xml
random 模块 import random print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3) ...
- 第五次编程作业-Regularized Linear Regression and Bias v.s. Variance
1.正规化的线性回归 (1)代价函数 (2)梯度 linearRegCostFunction.m function [J, grad] = linearRegCostFunction(X, y, th ...
- 无序hashset与hashmap让其有序
今天迭代hashmap时,hashmap并不能按照put的顺序,迭代输出值.用下述方法可以: HashMap<String,String> hashmap = new LinkedHash ...