zoukankan      html  css  js  c++  java
  • Django(3)--关联mysql

    ORM

    对象关系映射,是为了解决面向那个对象与数据库存在的互不匹配的现象的技术。

    mysql创建数据库

    • 本地安装mysql,并创建数据库
    create databases bookmanager;
    
    • settings.py
    #连接本地数据库,不能把settings.py代码暴露在公网中
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bookmanager',
            'USER': 'root',
            'PASSWORD': 'mysql',
            'HOST':'192.168.234.133',
            'PORT':'3306',
        }
    }
    
    • 放入settings.py同级目录__init__.py
    import pymysql  ##连接mysql
    pymysql.install_as_MySQLdb()
    
    • app01/models.py 放表(创建表)
      • 类---》表
      • 对象---》数据行(记录)
      • 属性---》字段
    #定义表格式
    from django.db import models
    class User(models.Model): #继承模块
        username = models.CharField(max_length=32) #varchar(32)
        password = models.CharField(max_length=32
    
    app01migrations00PS E:python_datapy27ookmanager> python manage.py migrate  #创建表结构
    Operations to perform:
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0002_logentry_remove_auto_add... OK
      Applying admin.0003_logentry_add_action_flag_choices... OK
      Applying contenttypes.0002_remove_content_type_name... OK
      Applying auth.0002_alter_permission_name_max_length... OK
      Applying auth.0003_alter_user_email_max_length... OK
      Applying auth.0004_alter_user_username_opts... OK
      Applying auth.0005_alter_user_last_login_null... OK
      Applying auth.0006_require_contenttypes_0002... OK
      Applying auth.0007_alter_validators_add_error_messages... OK
      Applying auth.0008_alter_user_username_max_length... OK
      Applying auth.0009_alter_user_last_name_max_length... OK
      Applying auth.0010_alter_group_name_max_length... OK
      Applying auth.0011_update_proxy_permissions... OK
      Applying sessions.0001_initial... OK1_initial.py
        - Create model User
    
    PS E:python_datapy27ookmanager> python manage.py makemigrations app01 #让 Django 知道我们在我们的模型有一些变更,做迁移文件
    Migrations for 'app01':
      app01migrations001_initial.py
        - Create model User
    
    PS E:python_datapy27ookmanager> python manage.py migrate app01 # 创建表结构,将表迁移到数据库
    Operations to perform:
      Apply all migrations: app01
    Running migrations:
      Applying app01.0001_initial... OK
    
    • 打开数据库视图

    数据库类

    • views.py
    from django.shortcuts import render,HttpResponse,redirect
    from  app01 import models
    
    def index(request):
        # 获取所有数据
        ret = models.User.objects.all() #固定写法,QuerySet 对象列表
        print(type(ret),ret)
        return render(request,'index.html')
    
    • 访问index页面
    System check identified no issues (0 silenced).
    November 20, 2019 - 00:04:16
    Django version 1.11.25, using settings 'bookmanager.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.
    Not Found: /
    [20/Nov/2019 00:04:18] "GET / HTTP/1.1" 404 2129
    <class 'django.db.models.query.QuerySet'> <QuerySet [<User: User object>, <User: User object>]>
    [20/Nov/2019 00:04:27] "GET /index/ HTTP/1.1" 200 157
    
    #一个User对象对应一条数据
    
    • views.py 循环返回的列表
    def index(request):
        # 获取所有数据
        ret = models.User.objects.all() #固定写法
        print(type(ret),ret)
        for i in ret:
            print(i.username,i.password,type(i.username))
        ret = models.User.objects.get(username='alex',password='123') #获取单条指定数据
        print(ret,type(ret))
        return render(request,'index.html')
    
    • 访问index页面
    
    System check identified no issues (0 silenced).
    November 20, 2019 - 00:09:59
    Django version 1.11.25, using settings 'bookmanager.settings'
    Starting development server at http://127.0.0.1:8000/
    Quit the server with CTRL-BREAK.
    <class 'django.db.models.query.QuerySet'> <QuerySet [<User: User object>, <User: User object>]>
    xiaoming 123.com <class 'str'> #拿到数据
    alex 123 <class 'str'>
    [20/Nov/2019 00:10:03] "GET /index/ HTTP/1.1" 200 157
    
  • 相关阅读:
    C++命名法则
    腾讯附加题---递归
    决策树
    ubuntu16.04安装后干的事
    node
    iview datetime日期时间限制
    GitLab CI/CD
    本地项目上传到github
    npm--配置私服
    gitlab添加yml文件.gitlab-ci.yml
  • 原文地址:https://www.cnblogs.com/yihutu/p/11894591.html
Copyright © 2011-2022 走看看