ORM初级实战简单的数据库交互

Posted topzhao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORM初级实战简单的数据库交互相关的知识,希望对你有一定的参考价值。

setting.py中:

技术分享图片
  1 """
  2 Django settings for untitled3 project.
  3 
  4 Generated by ‘django-admin startproject‘ using Django 2.0.7.
  5 
  6 For more information on this file, see
  7 https://docs.djangoproject.com/en/2.0/topics/settings/
  8 
  9 For the full list of settings and their values, see
 10 https://docs.djangoproject.com/en/2.0/ref/settings/
 11 """
 12 
 13 import os
 14 
 15 # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
 16 BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 17 
 18 
 19 # Quick-start development settings - unsuitable for production
 20 # See https://docs.djangoproject.com/en/2.0/howto/deployment/checklist/
 21 
 22 # SECURITY WARNING: keep the secret key used in production secret!
 23 SECRET_KEY = 3p4)ob=u_tpk_ha+5fs1x8vfn+(s5-92$(05%r04ny9v+dv=qp
 24 
 25 # SECURITY WARNING: don‘t run with debug turned on in production!
 26 DEBUG = True
 27 
 28 ALLOWED_HOSTS = []
 29 
 30 
 31 # Application definition
 32 
 33 INSTALLED_APPS = [
 34     django.contrib.admin,
 35     django.contrib.auth,
 36     django.contrib.contenttypes,
 37     django.contrib.sessions,
 38     django.contrib.messages,
 39     django.contrib.staticfiles,
 40     app01,
 41 ]
 42 
 43 MIDDLEWARE = [
 44     django.middleware.security.SecurityMiddleware,
 45     django.contrib.sessions.middleware.SessionMiddleware,
 46     django.middleware.common.CommonMiddleware,
 47     #‘django.middleware.csrf.CsrfViewMiddleware‘,
 48     django.contrib.auth.middleware.AuthenticationMiddleware,
 49     django.contrib.messages.middleware.MessageMiddleware,
 50     django.middleware.clickjacking.XFrameOptionsMiddleware,
 51 ]
 52 
 53 ROOT_URLCONF = untitled3.urls
 54 
 55 TEMPLATES = [
 56     {
 57         BACKEND: django.template.backends.django.DjangoTemplates,
 58         DIRS: [os.path.join(BASE_DIR, templates)]
 59         ,
 60         APP_DIRS: True,
 61         OPTIONS: {
 62             context_processors: [
 63                 django.template.context_processors.debug,
 64                 django.template.context_processors.request,
 65                 django.contrib.auth.context_processors.auth,
 66                 django.contrib.messages.context_processors.messages,
 67             ],
 68         },
 69     },
 70 ]
 71 
 72 WSGI_APPLICATION = untitled3.wsgi.application
 73 
 74 
 75 # Database
 76 # https://docs.djangoproject.com/en/2.0/ref/settings/#databases
 77 
 78 DATABASES = {
 79     default: {
 80         ENGINE: django.db.backends.sqlite3,
 81         NAME: os.path.join(BASE_DIR, db.sqlite3),
 82     }
 83 }
 84 
 85 
 86 # Password validation
 87 # https://docs.djangoproject.com/en/2.0/ref/settings/#auth-password-validators
 88 
 89 AUTH_PASSWORD_VALIDATORS = [
 90     {
 91         NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator,
 92     },
 93     {
 94         NAME: django.contrib.auth.password_validation.MinimumLengthValidator,
 95     },
 96     {
 97         NAME: django.contrib.auth.password_validation.CommonPasswordValidator,
 98     },
 99     {
100         NAME: django.contrib.auth.password_validation.NumericPasswordValidator,
101     },
102 ]
103 
104 
105 # Internationalization
106 # https://docs.djangoproject.com/en/2.0/topics/i18n/
107 
108 LANGUAGE_CODE = en-us
109 
110 TIME_ZONE = UTC
111 
112 USE_I18N = True
113 
114 USE_L10N = True
115 
116 USE_TZ = True
117 
118 
119 # Static files (CSS, javascript, Images)
120 # https://docs.djangoproject.com/en/2.0/howto/static-files/
121 
122 STATIC_URL = /static/
View Code

models.py中(数据库创建表结构都在这里):

技术分享图片
 1 from django.db import models
 2 
 3 # Create your models here.
 4 class Business(models.Model):
 5     caption = models.CharField(max_length=32)
 6     code = models.CharField(max_length=32,null=True,default=SA)#default是设置默认值,null=True是数据库中允许这个字段为空
 7 
 8 class Host(models.Model):
 9     nid = models.AutoField(primary_key=True) #设置主键并自增
10 
11     hostname = models.CharField(max_length=32,db_index=True)#max_length设置字段最大长度
12 
13     ip = models.GenericIPAddressField(protocol=ipv4,db_index=True)#db_index=True设置为索引
14 
15     port = models.IntegerField()
16 
17     b = models.ForeignKey(to="Business", to_field=id,on_delete=models.CASCADE)#报错加上了on_delete=models.CASCADE1
18     #设置外键关联Business中的id字段也可写成b = models.ForeignKey(‘Business‘,to_field=‘id‘)
View Code

urls.py中(路由都在这里):

技术分享图片
 1 """untitled3 URL Configuration
 2 
 3 The `urlpatterns` list routes URLs to views. For more information please see:
 4     https://docs.djangoproject.com/en/2.0/topics/http/urls/
 5 Examples:
 6 Function views
 7     1. Add an import:  from my_app import views
 8     2. Add a URL to urlpatterns:  path(‘‘, views.home, name=‘home‘)
 9 Class-based views
10     1. Add an import:  from other_app.views import Home
11     2. Add a URL to urlpatterns:  path(‘‘, Home.as_view(), name=‘home‘)
12 Including another URLconf
13     1. Import the include() function: from django.urls import include, path
14     2. Add a URL to urlpatterns:  path(‘blog/‘, include(‘blog.urls‘))
15 """
16 from django.contrib import admin
17 from django.urls import path
18 from app01 import views
19 from django.conf.urls import url
20 
21 urlpatterns = [
22     path(admin/, admin.site.urls),
23     url(r^business/$,views.business),#$是结束符
24 ]
View Code

views.py中(主要业务逻辑都在这里):

技术分享图片
 1 from django.shortcuts import render
 2 from app01 import models
 3 # Create your views here.
 4 def business(request):
 5 
 6 
 7     v1 = models.Business.objects.all()
 8 
 9     #QuerySet
10     #[obj(id,caption,code),obj(id,caption,code),obj(id,caption,code)]  里面的小元素是对象
11 
12     v2 = models.Business.objects.values(id, caption)  # 拿固定列
13     # QuerySet
14     # [{‘id‘:1,‘caption‘:‘xx‘,‘code‘:‘da‘},{....},{.....}]  里面的小元素是字典
15 
16     v3 = models.Business.objects.values_list(id, code)
17     # QuerySet
18     # [(1,开发),(2,运维)]  里面的小元素是字典
19 
20     return render(request,business.html,{v1:v1,v2:v2,v3:v3})   #注意:一定要加return   第一个参数request是对象不是字符串!不是字符串!不是字符串!
View Code

templates下的XXXX.html中(网页模板都放templates下):

技术分享图片
 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6 </head>
 7 <body>
 8 
 9 <h1> 对象 </h1>
10 <ul>
11     {% for row in v1 %}
12 
13      <li>   {{ row.caption }}-{{ row.code }}    </li>
14 
15     {% endfor %}
16 </ul>
17 
18 <h1> 字典 </h1>
19 
20 <ul>
21     {% for row in v2 %}
22 
23      <li>   {{ row.id }}-{{ row.caption }}    </li>
24 
25     {% endfor %}
26 </ul>
27 
28 
29 <h1> 元组 </h1>
30 
31 <ul>
32     {% for row in v3 %}
33 
34      <li>   {{ row.0}}-{{ row.1 }}    </li>
35 
36     {% endfor %}
37 </ul>
38 
39 </body>
40 </html>
View Code

 

以上是关于ORM初级实战简单的数据库交互的主要内容,如果未能解决你的问题,请参考以下文章

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

[AndroidStudio]_[初级]_[配置自动完成的代码片段]

廖大python实战项目第三天

PHP初级练习实战之公司留言板(原生)

ELK性能优化实战总结:java私塾初级模拟银源代码