django 数据库配置 ,APP 迁移.模型基础

耗尽温柔 提交于 2020-05-08 04:28:05
#

1.数据库的连接配置
django 连接mysql的配置流程:
- 安装 pymysql pip install pymysql
- 创建数据库用户
有创建数据库权限的用户
- 创建数据库
crm

1.进入数据库
mysql -uxxx -p1111
2. 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': '3306',
        '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 传递给模板.

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!