Django 模型使用自带的 ORM。

对象关系映射(Object Relational Mapping,简称 ORM )用于实现面向对象编程语言里不同类型系统的数据之间的转换。

ORM 在业务逻辑层和数据库层之间充当了桥梁的作用。

ORM 是通过使用描述对象和数据库之间的映射的元数据,将程序中的对象自动持久化到数据库中。


ORM 解析过程:

  • 1、ORM 会将 Python 代码转成为 SQL 语句。
  • 2、SQL 语句通过 pymysql 传送到数据库服务端。
  • 3、在数据库中执行 SQL 语句并将结果返回。

ORM 对应关系表:


Django对各种数据库提供了很好的支持,包括:PostgreSQL、MySQL、SQLite、Oracle。

Django 为这些数据库提供了统一的调用API。 我们可以根据自己业务需求选择不同的数据库。

实习公司业务更新使用postgres数据库,因此本文以部署在liunx上postgres数据库为实例来进行学习。由于我是用的社区版的pycharm来开发框架,过程中遇到了不少问题,但都一一排除了bug。话不多说了进入正题:

1.确保自己的数据库安装好并能正常使用,如果在安装调试数据库的过程中遇到了问题可以参考我之前的博文来尝试解决部分问题,确保一切正常后,打开数据库,并在自己的数据库中创建自己的数据表( ORM 无法操作到数据库级别,只能操作到数据表)。

我这里复制了了一个数据库

create table user_info (num_id serial --自增, user_id integer not null, user_name varchar(20) not null, user_password bytea not null, create_date timestamp not null, create_user_id integer not null, constraint user_info_PKC primary key (num_id, user_id) --表的主键
) ;--插入数据
insert into user_info
(user_id, user_name , user_password, create_date, create_user_id)
values
(1, 'zhangsan', '123456', now(), 0),
(2, 'lisi',  '123456', now(), 0),
(3, 'wangwu', '123456', now(), 0),
(4, 'zhaoliu', '123456', now(), 0)

2.一切准备就绪,接下来就进入Django项目:

进入Django项目之前,先要准备连接pg数据库的python库psycopg2,这里在我的另一篇博文里也介绍过psycopg2的安装和使用。

新建一个python django项目并新建一个项目的app。

django-admin startproject dbtest

python manage.py startapp dbh

然后为连接数据库做出配置,找到settings.py下将自己创建的app加入项目,并配置数据库连接的参数

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','dbh',#'dbh.apps.DbhConfig',
]DATABASES = {'default': {#'ENGINE': 'django.db.backends.sqlite3',#'NAME': BASE_DIR / 'db.sqlite3','ENGINE': 'django.db.backends.postgresql_psycopg2','NAME': 'xx', #数据库名字'USER': 'postgres', #用户名'PASSWORD': 'xx', #自己的密码'HOST':'localhost','PORT':'5432',}
}为了防止出现报错 可将一下两行直接改为:
DEBUG = FalseALLOWED_HOSTS = ['*']#让所有ip都能够访问到

在命令行中cd到自己的工程目录下将数据表的字段导入到自己的model.py里

python3 manage.py inspectdb

python3 manage.py inspectdb > dbh/models.py

导入成功后即可在自己的model里看到自己的数据表

新建自己的视图文件testdb.py并在其中添加如下代码

import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbtest.settings')
django.setup()
##以上操作是为了解决配置过程中遇到的一个报错。且为了避免未知的错误注意以上语句的添加顺序
from django.http import HttpResponse
from dbh.models import UserInfo #引入模型def userInfo(request):user = UserInfo.objects.values() #查询数据print("user=========", user)return HttpResponse(user)

绑定自己的url

from django.urls import pathfrom dbtest import testdburlpatterns = [path('userInfo/',testdb.userInfo) #前面是访问的action,后面的文件名.方法名
]

这里讲一下上文提到过的报错,报错内容如下:

django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

解决方法:

是因为程序没有识别出dbh这个应用,虽然我已经把dbh应用添加到setting文件中了,但是还是需要在文件开头添加两行配置环境变量的配置语句,让程序知道该去哪儿寻找 models 中的文件。

import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dbtest.settings')
django.setup()

添加完成之后在环境之中加入settings文件

到这里我已经把我遇到的所有bug全部排除,此时在浏览器中打开url

成功的查询到了这张数据表的内容!

Django学习 模型相关推荐

  1. django调用java_07.手把手教将深度学习利用Django将模型发布成服务供java调用

    标题 问题 一.python发布成服务 1.先建立一个深度学习模型并训练好 2.建立一个预测方法去调用训练好的模型 3.建立一个Django工程 4.将python利用模型预测的代码放入Django项 ...

  2. Python Django 学习 (二) 【Django 模型】

    注: 由于自己排版确实很难看,本文开始使用markdown编辑,希望有所改善 官方定义 A model is the single, definitive source of information ...

  3. Django学习日志三:模型层

    Django学习日志三:模型层1 日志一我们学习了Django的配置,详见: Django学习日志一Django的配置 日志二我们学习了创建第一个django项目,详见: Django学习日志二--创 ...

  4. python学习第6天---django框架---模型类及数据库操作

    python学习第6天---django框架---模型类及数据库操作 目录 文章目录 1.字段与选项 2.查询函数 3.查询集 4.模型类之间的关系 4.1.对应关系 4.2.关联查询 5.模型管理器 ...

  5. 【Django】项目中调用深度学习模型model.predict()(Django两种启动方式runserver和uwsgi的区别)

    目录 问题 测试 解决方法 Django两种启动方式runserver和uwsgi的区别 问题 部署含有深度学习模型的Django项目的uWSGI.Nginx服务器的时候,所有模块都可以正常运行,也可 ...

  6. Django介绍和虚拟环境(django特点、MVC、MVT、Django学习资料)

    MVT流程: 创建Django项目和应用 django-admin startproject name python manager.py startapp name 视图和ULR 视图的请求和响应 ...

  7. django 学习笔记

    django 学习笔记 启动虚拟机: workon bj18_py3 创建一个项目: django-admin.py startproject mysite 启动开发用服务器:从外层项目 mysite ...

  8. 【Django】模型层说明

    [Django模型层] 之前大概介绍Django的文章居然写了两篇..这篇是重点关注了Django的模型层来进行学习. ■ 模型定义 众所周知,Django中的模型定义就是定义一个类,其基本结构是这样 ...

  9. 机器学习结构化学习模型_生产化机器学习模型

    机器学习结构化学习模型 The biggest issue in the life-cycle of ML project isn't to create a good algorithm or to ...

最新文章

  1. 电话号码的字母组合Python解法
  2. python编程软件排行榜_PYPL 9月编程语言排行榜发布 Python一枝独秀
  3. 通讯录 app 使用哪种协议查找服务器上存储的联系人?,uniapp通讯录查找
  4. 使用VB6.0编写管家婆服装----百胜服装ERP数据转换程序和通用SQL server查询程序的心得
  5. android Google Advertising ID 如何重置
  6. 进度类计算_PERT
  7. 17229 Lry,你除了2还是2
  8. android h5 唤醒微信,H5唤醒App,用通用连接解决在微信打开APP的问题
  9. 走近图灵奖大师David Patterson开挂的人生
  10. diy一个android手机版下载,家居3D设计DIY
  11. setup/teardown用法汇总
  12. Android开发AndroidStudio与eclipse安装与使用
  13. 视频教程-深入学习matlab免疫算法7讲-Matlab
  14. java植物大战僵尸_植物大战僵尸java游戏
  15. 从零到一实现企业级微前端框架,保姆级教学
  16. mysql求回购率_回购利率计算方法
  17. 【SEO工具】抓取百度关键词相关关键词挖掘工具
  18. 边缘锐化和对比度增强的有效方法
  19. 中国十大用户体验设计咨询公司排名
  20. yolov5启用数据增强、tensorboard可视化及cutout增强

热门文章

  1. web前端短期培训课程都有那些内容
  2. 数字芯片的设计流程及其使用工具
  3. WPF界面控件Telerik UI for WPF初级入门教程 - 入门指南
  4. php中$_POST接收不到参数问题
  5. 如何干净地删除labview
  6. 机械臂速成小指南(十五):线性规划
  7. 制作爱奇艺视频播放列表(第六章盒子模型)
  8. COS 访谈第 18 期:陈天奇(发明xgboost算法的大佬)
  9. Neo4j【有与无】【N3】使用图进行数据建模
  10. hashcode值指的是什么_哈希码值是什么?什么是哈希码?