django 数据库配置 ,APP 迁移.模型基础
#
1.数据库的连接配置
django 连接mysql的配置流程:
- 安装 pymysql pip install pymysql
- 创建数据库用户
有创建数据库权限的用户
- 创建数据库
crm
.进入数据库
mysql -uxxx -p1111
. create database crm 数据库创建成功.
- 修改配置
settins
- 修改项目文件夹(和settings.py文件所在的目录)下
__init__.py 文件
写上:
import pymysql
pymysql.install_as_MySQLdb()
- 设置时区 TIME_ZONE = 'Asia/ShangHai' # 北京时间
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'crm',
'HOST': '192.168.1.11',
'PORT': '',
'USER': 'user',
'PASSWORD': 'pswd'
}
}
TIME_ZONE = 'Asia/Shanghai'
2.django的ORM系统
-对象关系映射(Object Relational Mapping,简称ORM)!
简单的说就是用面向对象的方式,描述数据库,操作数据库,
达到不用编写SQL语句就能对数据库进行增删改查。
3.模型的创建与激活
创建模型
Student的模型,代表啊学生
总结:
1. 每一个模型都是django.db.models.Model的子类
2. 类变量 表示模型中的数据库字段
3. 每一个字段由一个字段类的实例表示
from django.db import models # Create your models here.
class student(models.Model):
name = models.CharField(max_length=20)
sex = models.SmallIntegerField(default=0)
age = models.SmallIntegerField(default=0)
qq = models.CharField(default='')
phone = models.CharField(max_length=20, default='')
c_time = models.DateField(verbose_name='当前UTC时间', auto_now_add=True)
激活模型
1.在项目中注册app
# Application definition INSTALLED_APPS = [
'student', # 注册 app
'teatcher',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
2.运行数据库迁移命令(一定要在项目根目录下)
python mange.py makemigrations teacher
告诉django,我们做了哪些数据库的更改 teacher 是app_name ,不写为所有app

***在app目录 下的migrations/生成 0001_initial.py
查看 迁移的sql语句 python manage.py sqlmigrate app_name 0001(0001_inital.py)

迁移
sqlmigrate 从迁移获取sql语句
--
-- Create model Student
--
CREATE TABLE `teacher_student` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(20) NOT NULL,
`age` smallint NOT NULL,
`sex` smallint NOT NULL,
`qq` varchar(20) NOT NULL,
`phone` varchar(20) NOT NULL,
`c_time` datetime(6) NOT NULL);
COMMIT;
3.运行migrate命令,使迁移生效
python manage.py migrate

mysql 数据库中创建 了2张表.migrate 和student

*****数据表的修改 ,重复上述二个步骤
# 表名 appname_模型name.lower
# django 自动创建 主键ID
4.数据的增删改查
-工具 djang shell 调试工具
python manage.py shell

- 增 4种方法

新增对象:save()后才生效.
第二个方法,,修改内容同下.

s2.save()

直接新增

student.object.get_or_create(name='xxx')
有则查,无则直接增


- 查
student.objects.all() 背后的查询集

查询集的 切片操作 效果

In [33]: student.objects.get(id=1)
Out[33]: <student: 第一条-25> 相当于 sql select * from student where id=1 get 只能 获取1条,多条时报错 pk = django 中的 任意表的 主键 get 配合 主键 操作 student.object.get(pk=1)
修改:

赋值 ,,save()
update 更新

删除.delete

从数据库 获取数据 在views 中
导入 模型,查询
from student.models import student
student.object.all()
通过context 传递给模板.
django 数据库配置 ,APP 迁移.模型基础的更多相关文章
- 第一个Django应用 - 第二部分:Django数据库配置,模型和后台
汇总操作 注:polls为应用名 1.执行命令:python manage.py migrate,生成默认的数据库表等 2.修改应用的models.py文件,添加数据库表模型等 3.INSTALLED ...
- django数据库配置,即数据库分库分表
一 Django的数据库配置 (一)修改settings.py文件关于数据库的配置: Django默认使用sqlite: DATABASES = { 'default': { 'ENGINE': ...
- 5.Django数据库配置
Django默认支持sqlite.mysql.oracle.postgresql数据库,像db2和sqlserver需要安装第三方的支持 配置Django数据库:\hello_django\hello ...
- Django数据库配置
将Django使用数据库由默认的sqlite3更改为mysql: 1.安装mysql驱动程序 MySQLdb(mysql-python) mysqlclient Connector/Python Py ...
- 【Mysql的那些事】Django数据库配置
1:安装与配置 1:pip install PyMySQL(或者直接使用Pycharm的setting,点击添加PyMySQL) 2:在Django的工程同名子目录的__init__.py文件中添加如 ...
- Django 数据库配置
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'books', #你的数据库名称 'USER': ' ...
- python27+django数据库配置常见问题
mysql缺乏模块,需要安装,建议去http://sourceforge.net/projects/mysql-python/files/mysql-python/下源码编译,或者安装msi文件htt ...
- Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)
Django 06 Django模型基础1(ORM简介.数据库连接配置.模型的创建与映射.数据的增删改查) 一.ORM系统 #django模型映射关系 #模型类-----数据表 #类属性-----表字 ...
- django学习-数据库配置-创建模型
数据库配置 在mysite/settings.py中,包含了django项目设置的python模块 通常,这个配置文件使用SQLite作为默认数据库.如果你不熟悉数据库,或者只是想尝试下django, ...
随机推荐
- 软件工程 week 03
一.效能分析 1.作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2139 2.git地址:https://git.coding.ne ...
- oracle note
null null为无效的,未指定的,未知的活不可预知的值 null不是空格或0 包含null 的数学表达式其结果都为空值 null 永远!= null 判断某个字段为null,用 ename is ...
- 开源WHMCS支付宝当面付和即时到账插件
开源WHMCS支付宝当面付和即时到账插件 链接: https://pan.baidu.com/s/1i5HU4hn 密码: crq7
- Go Example--panic
package main import "os" func main() { //panic会中断程序执行,在此处一直往上抛panic,需要上游的recover来捕获 panic( ...
- docker基本命令使用
学会使用docker命令帮助 docker help 子命令 查看docker镜像 docker images 搜索镜像 docker search 镜像名 下载镜像 docker pull 镜像名 ...
- 如何在myeclipse中实现jquery的自动提示功能
在web开发过程中,myeclipse中jsp可以实现自动提示功能,但是jquery代码却无法实现自动提示,需要自己一个个手动去输入,效率过低,怎么办? 工具/原料 jquery 1.8.3.js ...
- 二叉树遍历(flist)(已知中序和按层遍历,求先序 )
问题 F: 二叉树遍历(flist) 时间限制: 1 Sec 内存限制: 128 MB提交: 11 解决: 9[提交][状态][讨论版][命题人:quanxing][Edit] [TestData ...
- Using a ScrollView - RN4
使用滚动条. 1. import import {ScrollView} from "react-native"; 2. Using <ScrollView> ... ...
- Vue--父子组件之间的传值
1.父传子 1.在父组件中给子组件绑定动态属性 <v-home :title="title"></v-home> 2.在子组件中用propos[]接收 ex ...
- CSS笔试题
如何实现移动端9宫格 如何实现移动端下列8宫格 实现移动端图片画廊CSS样式 写一个简单的animation的css动画 美化select,radio,range样式,只需考虑谷歌浏览器,下面给出的是 ...