创建app子应用,配置数据库,编写模型,进行数据迁移
文章目录
web开发django模型
在django开发中,要求我们使用app进行数据库的开发
在一个web项目中,比如电商项目,电商项目中有用户管理模块,订单管理模块,商品管理的模块,日志管理等模块放在同一个urls,views中不方便管理,django给我们提供了子应用,将独立的功能进行独立管理,将独立的模块放在同一个app当中,包括该模块的路由,视图,html,静态资源。
1.创建app子应用
python manage.py startapp app01
app01 是子应用的名字
子应用目录说明

migrations 数据迁移文件,数据库表结构的同步的
admin.py 站点管理
apps.py 配置当前子应用的相关信息
models.py 模型
tests.py 用于开发测试应用
views.py 视图文件
注意:
子应用中没有路由文件,需要自己创建
2.配置子应用

3.使用

4.配置子应用管理自已的路由

步骤:
子应用中创建urls.py
主目录的路由文件中 导入include
path(‘app01/’,include(‘app01.urls’))
访问:

django数据库开发思维与ORM
1.创建数据库
create database stu charset=utf8;
2.配置数据库
在主目录的settings.py文件中 配置数据库
DATABASES = {
'default':{
'ENGINE':'django.db.backends.mysql',
'NAME':'stu', ##库名
'USER':'root', ##用户名
'PASSWORD':'999999', ##用户密码
'HOST':'127.0.0.1', ##IP地址
'PORT':'3306', ##端口号
}
}
3.安装pymysql
pip install pymysql
4.编写模型
在子应用的models.py文件中 编写模型
from django.db import models
class Person(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
age = models.IntegerField()
height = models.DecimalField(max_digits=5,decimal_places=2)
birthday = models.DateField()
字段类型
CharField varchar类型,需要指定长度
IntegerField 整型
DecimalField 浮点型,需要指定最大长度和小数点位数
DateField 日期 年-月-日
字段属性
max_length 最大长度
verbose_name 备注,站点管理中用于显示字段为中文
max_digits 浮点型最大长度
decimal_places 小数点位数
5.数据迁移
数据迁移之前的准备工作
1.在数据迁移之前,确定配置是否完成
python manage.py check
2.排错
- 第一个错误
Error loading MySQLdb module.
原因:django模式使用python2 版本的mysql数据库模块,python3 使用的是pymysql模块
解决方法:

- 第二个错误
ImproperlyConfigured:mysqlclient 1.3.13 or newer is required ; you have 0.9,3
原因:django默认检测pymysql的版本,修改源码,去掉检测
解决办法:

将上图中35,36两行代码注释掉
执行数据迁移操作
- 生成迁移文件
python mange.py makemigrations 生成一个迁移文件
AttributeError:‘str’ object has no attribute ‘decode’
解决方案:

操作成功

2. 同步表结构
python mange.py migrate 使用迁移文件,进行表结构的同步
查看数据库stu

app-person表是根据我们写的类模型创建的表,默认名字是 子应用名字–模型名字(小写)
修改表的默认名字

6.站点管理

创建超级用户
createsuperuser
设置用户名
设置密码
站点管理

安装模型类

使用后台增加数据

修改站点管理后台为中文

创建app子应用,配置数据库,编写模型,进行数据迁移的更多相关文章
- ubuntu 下 mysql数据库的搭建 及 数据迁移
1.mysql的安装 我是使用apt-get直接安装的 :sudo apt-get install mysql-server sudo apt-get install mysql-client 2.配 ...
- Ubuntu中开启MySQL远程访问功能,并将另一个数据库服务器中的数据迁移到新的服务器中
一.开启MyS远程访问功能 1.进入服务器输入netstat -an | grep 3306确认3306是否对外开放,MySQL默认状态下是不对外开放访问功能的.输入以上命令之后如果端口没有被开放就会 ...
- 笔记:EF出现列名 'Discriminator' 无效、类没有加入数据库上下文也被数据迁移生成表
笔记: EF出现列名 'Discriminator' 无效: 类没有加入数据库上下文也被数据迁移生成表: 出现该问题一般是使用了某个基类继承了实体类: 原因是code first的POCO实体对象的继 ...
- CodeFirstMigrations更新数据库结构(EF数据迁移)
背景 code first起初当修改model后,要持久化至数据库中时,总要把原数据库给删除掉再创建(DropCreateDatabaseIfModelChanges),此时就会产生一个问题,当我们的 ...
- ES数据库重建索引——Reindex(数据迁移)
应用背景: 1.当你的数据量过大,而你的索引最初创建的分片数量不足,导致数据入库较慢的情况,此时需要扩大分片的数量,此时可以尝试使用Reindex. 2.当数据的mapping需要修改,但是大量的数据 ...
- Django添加模型无法数据迁移解决方法
用Django开发一款博客,按照教程一步步写下来,发现当我创建一个模型blogpost的时候,使用数据迁移 python manage.py migrate 提示 Operations to perf ...
- 《Entity Framework 6 Recipes》中文翻译系列 (38) ------ 第七章 使用对象服务之动态创建连接字符串和从数据库读取模型
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第七章 使用对象服务 本章篇幅适中,对真实应用中的常见问题提供了切实可行的解决方案. ...
- EF简单的CodeFirst示例(自己创建数据库,不使用数据迁移)
1.新建一个控制台应用程序 2.右键引用--管理NuGet程序包,安装如下几项 3.打开App.config文件,加入如下代码: <connectionStrings> <ad ...
- EF三种数据库操作模型比较
https://blog.csdn.net/xiongmeiqin/article/details/80196089 EF 中 Code First 的数据迁移以及创建视图 写在前面: EF 中 Co ...
随机推荐
- 小迪安全 Web安全 基础入门 第六天 - 信息打点-Web架构篇&域名&语言&中间件&数据库&系统&源码获取
一 . Web架构 语言.常用的Web开发语言有PHP,Java,Python,JavaScript,.net等.具体可参考w3school的介绍. 中间件. (1)常见的Web服务器中间件:IIS. ...
- 又拿奖了!腾讯云原生数据库TDSQL-C斩获2021PostgreSQL中国最佳数据库产品奖
日前,开源技术盛会PostgresConf.CN & PGconf.Asia2021大会(简称2021 PG亚洲大会)在线上隆重召开,腾讯云作为业内领先的云数据库服务商受邀出席,多位专家深入数 ...
- 40张图+万字,从9个数据类型帮你稳稳的拿捏Redis数据结构
摘要:本文把Redis新旧版本的数据结构说图解一遍,共有 9 种数据结构:SDS.双向链表.压缩列表.哈希表.跳表.整数集合.quicklist.listpack. 本文分享自华为云社区<为了拿 ...
- CF1454B Unique Bid Auction 题解
Content 给定一个长度为 \(n\) 的数列 \(\{a_i\}_{i=1}^n\),请找出在数列中仅出现一次的最小的数的位置. 数据范围:\(t\) 组询问,\(1\leqslant t\le ...
- Ribbon——负载均衡
一.什么是Ribbon Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超 ...
- Java Record 的一些思考 - 默认方法使用以及基于预编译生成相关字节码的底层实现
快速上手 Record 类 我们先举一个简单例子,声明一个用户 Record. public record User(long id, String name, int age) {} 这样编写代码之 ...
- svn服务器用户名密码更改后,如何更新本地用户名密码
在提交时,IDE会给出这样的提示,说明用户名密码已更改 在命令行输入 svn ls https:XXX(项目的地址),具体步骤如下图
- 【LeetCode】1200. Minimum Absolute Difference 解题报告 (C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 排序 日期 题目地址:https://leetcode ...
- 【LeetCode】515. Find Largest Value in Each Tree Row 解题报告(Python & C++ & Java)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS DFS 日期 题目地址:https://le ...
- 【LeetCode】456. 132 Pattern 解题报告(Python)
[LeetCode]456. 132 Pattern 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fu ...