Django框架基于ORM创建基本类型以及生成数据库结构

鳄鱼君

发表文章数:642

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Python » Django框架基于ORM创建基本类型以及生成数据库结构

ORM即Object-Relationl Mapping,它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句打交道,只要像平时操作对象一样操作它就可以了 。

操作ORM的本质可以分为两步:

  • 创建根据类自动创建数据库表
  • 根据对数据库表中的数据进行跟中操作

按照Django框架中路由的分发这篇文章来进行说明,现在我需要在myapp1中做一些操作,我们来对:http://127.0.0.1:8000/myapp1/login/,这个url做些处理,让用户名输入密码,后台获取密码进行检测,按照前一篇文章的介绍,现在我们只需要修改myapp1文件下的urls.py和views.py文件,而不需要修改django工程目录下的。

用户提交数据,我们需要拿到用户的数据,同数据库中的数据比较,在此之前你需要有一个数据库吧,不然你怎么核对信息。创建类在myapp下models.py文件中,不要胡乱修改文件的名字,否则django就找不到了!

from django.db import models

# Create your models here.
class UserInfo(models.Model):  #创建一个类必须继承models.Model
    #django会自动创建一个id列,自增的
    #创建用户名列,字符串类型,指定长度
    username=models.CharField(max_length=32)
    password=models.CharField(max_length=64)

这样一个类就创建好了,然后需要在终端执行命令生成数据库表:python manage.py makemigrations。执行这句命令django会寻找所有的migrations,我们前面是创建了很多的app,也就是有很多migrations,它不知道是哪一个,所以就会显示:No changes detected,你需要在settings.py配置文件中进行配置:

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'myapp1',   #app的名称     
]

这样就完全没问题了,再次执行以上的命令如果在控制台出现以下代码就是成功了:

Migrations for 'myapp1':
  myapp1\migrations\0001_initial.py
    - Create model UserInfo

接下来执行命令python manage.py migrate命令,就会生成数据库了。默认情况下django的数据库是sqlite,现在我们可以打开django工程下的db.sqlite3文件来看一下内容是什么,可以使用Navicat Premium 查看:

Django框架基于ORM创建基本类型以及生成数据库结构

可以看到数据库表不止一个,有很多,其中myapp1_userinfo是我们创建的表,其它的是django自身使用的,我们在这里先不详细介绍!我们来理一下刚才的思路:首先执行python manage.py makemigrations命令,会在对应app下的migrations中生成一个0001_initial.py文件,然后执行python manage.py migrate命令,django会根据这个文件生成数据库,然后就完成了。

如果我在本地装有mysql,我能不能使用mysql呢?当然可以,你只需要在settings.py文件中进行配置就可以了:

# Database
# https://docs.djangoproject.com/en/3.0/ref/settings/#databases

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',  #引擎为sqllite
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

以上是django的默认配置,我们想要使用mysql只需要简单修改默认的引擎,可以打开文档说明瞧一瞧!或者也可以看下面:

DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'dbname',  #数据库名 必须自己创建数据库
    'USER': 'root',   #用户名
    'PASSWORD': 'xxx', #密码
    'HOST': '',   #ip
    'PORT': '',   #端口
    }
}

# 由于Django内部连接MySQL时使用的是MySQLdb模块,而python3中还无此模块,所以需要使用pymysql来代替
  
# 在django工程目录下的的 __init__.py文件中添加一下信息
  
import pymysql
pymysql.install_as_MySQLdb() 

按照自己的爱好使用,鳄鱼君喜欢django默认的sqllite,那么就不在这里尝试mysql了,感兴趣的可以自己修改一下试试!

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Django框架基于ORM创建基本类型以及生成数据库结构》 发布于2020-04-13

分享到:
赞(2) 赏杯咖啡

评论 抢沙发

8 + 3 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册