zoukankan      html  css  js  c++  java
  • Django创建并连接数据库(实现增删改查)--ORM框架雏形

    第一步:要先创建数据库(orm是不能创建数据库的)

    第二步:settings里面指定连接到哪个数据库

    DATABASES = {
        #默认使用的是sqlite3数据库
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
        #指定使用Mysql数据库
        # 'default':{
        #     'ENGINE':'django.db.backends.mysql',
        #     'HOST':'127.0.0.1',
        #     'PORT':3306,
        #     'USER':'root',
        #     'PASSWORD':'root',
        #     'NAME':'userinfo',   #指定到那个数据库(数据库要事先建好)
        #
        # }
    }
    

    上面的NAME就是指定的数据库的名字

    第三步:在app文件夹下面的init.py里面配置

    #因为操作msq数据库默认是用Mysqldb,现在就是手动指定用pymsql来操作数据库:
    import pymysql
    pymysql.install_as_MySQLdb()
    

    第四步:在models里定义类,类必须继承 models.Model,写属性,对应着数据库的字段

    #指定数据库表都有哪些字段及字段的属性
    from
    django.db import models # Create your models here. class UserInfo(models.Model): nid = models.AutoField(primary_key=True) #是否设置为主键 name = models.CharField(max_length=32) # password = models.CharField(max_length=32,default='nicai') #可以指定默认值 password = models.CharField(max_length=32,) gender = models.IntegerField() birthday = models.DateField() def __str__(self): return self.name

    第五步:迁移数据库makemigrations是生成一个文件,migrate是将更改提交到数据量)

      方式一:

      执行 python manage.py makemigrations(相当于做一个记录)

      

      

      执行 pyhton manage.py migrate (把前面创建的表的字段执行到数据库中)

      

       

      对应settings里面添加的app自动会有相对应的数据表(创建好的表的名字=aap名字+models.py里面定义的class类的名字)

      

      

      方式一:通过pycharm软件点击

        

    第六步:views.py拿网页数据并将录入到数据库指定表的字段里面

    from django.shortcuts import render,HttpResponse
    
    # Create your views here.
    
    from app01.models import *
    
    #通过网页注册,拿到用户的数据信息,完成注册
    def register(request):
        if request.method == "POST":
            name=request.POST.get('name',None)
            password=request.POST.get('password',None)
            gender=request.POST.get('gender',None)
            birthday=request.POST.get('birthday',None)
    
            #实例化models.py里面的UserInfo类,传入上面从Web提交过来的数据,将数据写入数据库
            user=UserInfo.objects.create(birthday=birthday,name=name,password=password,gender=gender)
            print(user) #UserInfo object 是个对象
            print(user.__dict__) #{'_state': <django.db.models.base.ModelState object at 0x05482290>, 'nid': 4, 'name': 'b', 'password': 'b', 'gender': '5', 'birthday': '1992-03-28'}
    
            return HttpResponse('注册成功')
    
        return render(request,'register.html')
    
    #查看表的内容
    def user_list(request):
        user_list=UserInfo.objects.all()
        print(user_list)          #<QuerySet [<UserInfo: yangzhizong>, <UserInfo: 杨智宗>]>  QuerySet:即结果集
        print(type(user_list))    #<class 'django.db.models.query.QuerySet'>
        print(user_list[1].name)  #yangzhizong  可以依次取出输入的name值
    
        return render(request,'user_list.html',{'user_list':user_list})

    第七步:更新表的时候就要执行下这2条命令:makemigrations 和 make (每次都会有记录,不能删除)

    取出数据库中每条所有的用户的信息,相当于一个对象 列表对象里  放了一堆对象

     

     第八步:查询表时也可以一对一,多对多查询(待完善。。)

  • 相关阅读:
    我总结的面试题系列:kafka
    RabbitMQ大厂面试题
    [Algorithm] 并查集
    [LintCode] 编辑距离
    [LeetCode] Length of Longest Fibonacci Subsequence
    [LintCode] 交叉字符串
    [LeetCode] Permutation Sequence
    Permutation Sequence
    [LeetCode] Next Permutation
    [LeetCode] Longest Palindromic Substring
  • 原文地址:https://www.cnblogs.com/yangzhizong/p/9576543.html
Copyright © 2011-2022 走看看