1. 程式人生 > >django 數據庫配置 ,APP 遷移

django 數據庫配置 ,APP 遷移

phone default mysq types verbose make settings time_zone rfi

#

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 傳遞給模板.

django 數據庫配置 ,APP 遷移