django自带数据库,django 连接mysql
众所周知,django更适合原生开发,也就是通过这个框架构建一个全新的项目,通过修改models创建一个新的数据库表. py以下文章主要介绍Django与Mysql中已有数据库连接的相关信息,有需要的可以参考一下。
我的Mysql已经有了项目需要使用的相关数据库。现在我需要通过django获取Mysql中的数据并使用它。下面记录了django和mysql的连接过程。
(此处默认您已经建好了django框架,如果没有准备好django,请参照我本篇文章
https://www.jb51.net/article/249861.htm
首先需要在项目的settings.py文件中配置mysql的连接信息:替换之前配置的sqlite配置信息。
之前默认的数据库配置信息如图所示,与sqlite连接。
现在我们需要用我们自己的本地Mysql信息替换它,并连接到我的ry-vue数据库。代码如下,对应的属性需要根据我们自己的Mysql进行配置。如果不清楚,请看下图:
数据库={
默认 : {
引擎 : django.db.backends.mysql ,
要连接到的数据库的主机 : 127.0.0.1 ,# ,# ip
端口 3360 3306 ,#数据库连接端口,一般默认为3306。
名称 3360 ry-vue ,#已经存在的数据库名称
用户 3360 根,#用户名
密码 3360 ,#用户密码
选项 : {
init _ command : SET SQL _ mode= STRICT _ TRANS _ TABLES ,
}
}
}
Mysql相关对应信息的查看过程如下图所示:
您可以看到相应的连接信息:
然后在settings.py同级目录的__init__.py文件中增加下面代码,导入mysql的配置
#编码=utf-8
导入pymysql
pymysql.install_as_MySQLdb()
如图所示:
这时你会发现导入的pymysql已经报错了。这是因为我们还没有安装pymysql包。按照以下步骤安装pymysql:
安装成功后,不会报告任何错误。
之后将数据库中的表导入django,执行下面的命令,也就是说对应数据库中的表会自动生成到models.py文件中。
python manage . py inspectdb models . py
等待几秒钟或刷新文件夹,一个models.py会出现在manage.py下,其中包含现有数据库的所有表和结构。
可以看到第一张表是bank,和我的数据库ry-vue中的显示一模一样。
之后把想要使用的表的 managed 都改成 True.比如我想在django中操作scratch_choice_answer表中的信息,需要通过类名找到表,然后修改,如图:
然后将需要使用的表复制到程序需要使用的目录中。如果基本都用上了,就把整个文件复制下来。举个例子,如果我的寄存器只需要使用scratch_choice_answer表中的信息,那么我会如下操作。只需将ScratchChoiceAnswer类的内容复制到所需的文件夹中。
因为需要使用register app,所以再次检查这个文件是否在se中。
ttings注册过
等到把需要的内容复制到要使用的文件夹之后,刚刚自动生成的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
然后运行django,(如果这时候报错ValueError: source code string cannot contain null bytes,其实是models里的编码问题,解决方法:
运行django框架出现如下报错,我出现该问题是由于数据库编码不正确
解决方法如下:
打开models.py,将编码改为UTF-8
django运行成功后可以看到获取到Mysql里的值
大功告成!
总结
到此这篇关于django连接Mysql中已有数据库的文章就介绍到这了,更多相关django连接Mysql数据库内容请搜索盛行IT软件开发工作室以前的文章或继续浏览下面的相关文章希望大家以后多多支持盛行IT软件开发工作室!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。