Django:ORM单表操作

  ORM,实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖特定的数据库,通过简单的配置,就可以轻松更换数据库,这极大的减轻了开发人员的工作量,不需要面对因数据库变动而导致的无效劳动

ORM是 对象-关系-映射 的简称:object relational mapping

类对象--->sql---->pymysql---->mysql服务端---->磁盘,ORM就是将类对象的语法翻译成sql语句的一个引擎

原生sql和python的orm代码对比

#sql中创建表
create table empluyee(
    id int primary key auto_increment,
    name varchar(20),
    gender bit default 1,
    birthday data,
    department varchar(10),
    salary decimal(8,2) unsigned,
)
# 添加表记录
insert employee (name,gender,birthday,salary,department) values ('alex',1,'1977-12-12',4000,'cleaning');

#查询表记录
select * from employee where name='alex';

#更新表记录
update employee set birthday='1966-01-01' where name='alex';

#删除表记录
delete from employee where name='alex';

#Django中models.py
class Employee(models.Model):
    id = models.AutoField(primary_key=True)
    name=models.CharField(max_length=32)
    gender=models.BooleanField()
    birthday=models.DateField()
    department=models.CharField(max_length=32)
    salary=models.DecimalField(max_digits=8,decimal_places=2)
#python的类对象
emp=Employee(name='alex',gender=True,birthday='1981-01-01',department='cleaning')
emp.save()
#查询一条表记录
Employee.objects.filter(age=24)
#更新一条表记录
Employee.objects.filter(id=1).update(birthday='1982-02-02')
#删除一条表记录
Employee.objects.filter(id=1).delete()

在pycharm用连接mysql

1.在项目settings.py中修改DATABASES
    DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST':'127.0.0.1',            
        'PORT':3306,
        'NAME':'ormtest',    # 要连接的mysql库名
        'USER':'root',
        'PASSWORD':'123456',
        }
    }
2.在项目__init__.py中
    import pymysql
    # MySQLdb()是Django用来连接mysql数据的工具,这里用pymysql代替MySQLdb
    pymysql.install_as_MySQLdb()

3.在应用文件夹中models.py中写入创建数据的类
    class UserInfo(models.Model):
    #create table userinfo(id int primary key auto_increment,
    # name varchar(16),age int,current_date date)
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=16)
        age = models.IntegerField()
        current_date = models.DateField()

4.在命令行(Terminal)中输入命令
    python manage.py makemigrations    # 创建一条记录,数据库操作的记录
    python manage.py migrate        # 连接数据库,并按model.py中写类来生成表,以及生成django自带的表

外部文件使用models.py

在Django中可以用外部的py文件操作models.py,来操作数据库
1.在项目下创建 xx.py文件,写入代码
# 外部文件使用jdango的models,需要配置jdango环境

import os

if __name__ == '__main__':
    os.enveron.setdefault("DJANGO_SETTINGS_MODULE","ormhw.settings")
    import django                                #  项目名称  settings.py
    django.setup()
    from app01 import models
    
    obj_lst = []
    
    for i in range(1,10):
        obj = models.Books(
            title = 'python%s'%i,
            price = 120+i,
            pub_date = '101%s-10-10'%i,
            publish = 'beida' if i<5 else 'tsinghua'
        )
        obj_lst.append(obj)
    models.Books.objects.bulk_create(obj_lst)
2.直接运行xx.py 文件,就可以执行代码,对数据库做操作

Django项目通过浏览器admin后台管理数据库

# 在app 中的admin.py中添加需要管理的类,即创建的表
from django.contrib import admin
from app01 import models
# Register your models here.

admin.site.register(models.Book)

#在pycharm terminal中输入命令
python manage.py createsuperuser

#接着输入username/password,email可以不用输入,直接回车

#运行项目,在浏览器上输入127.0.0.1:8000/admin
#输入用户名密码即可管理添加的数据库表了

数据库相关字段

'''
1.CharField    
    字符串字段,必须要有一个参数:max_length
2.IntergerField  
    保存一个整数
3.DecimalField   
    一个浮点数,必须提供两个参数:max_digits 总位数,decimal_places 小数位数
4.AutoField     
    表示一个自增字段
5.BooleanField  
    A true/false field.admin 用 checkbox 来表示此类字段
6.TextField
    一个容量很大的文本字段
    admin用一个