django models索引_四 Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置...

Django框架,models.py模块,数据库操作——创建表、数据类型、索引、admin后台,补充Django目录说明以及全局配置文件配置

数据库配置

django默认支持sqlite,mysql, oracle,postgresql数据库。

1,django默认使用sqlite的数据库,默认自带sqlite的数据库驱动

引擎名称:django.db.backends.sqlite3

在全局配置文件settings.py可以看到确认配置使用的sqlite数据库

# Database

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

# 默认配置使用的sqlite数据库

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.sqlite3', #配置数据库引擎名称

'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), #生成数据库到当前的项目文件夹里

}

}

所以我们首次运行程序时会在目录生成db.sqlite3数据库

2,MySQL数据库【重点】

mysql驱动程序

MySQLdb(mysql python)

mysqlclient

MySQL

PyMySQL(纯python的mysql驱动程序)

在django的项目中会默认使用sqlite数据库,如果要使用MySQL数据库需要重新配置MySQL数据库信息,将sqlite数据库注释掉

在settings.py配置MySQL数据库信息

#MySQL数据库

DATABASES = {

'default': {

'ENGINE': 'django.db.backends.mysql', #配置数据库引擎名称

'NAME': 'jxiou', #数据库名称

'USER': 'root', #数据库用户名

'PASSWORD': '279819', #数据库密码

'HOST': '127.0.0.1', #数据库链接地址

'PORT': '3306', #数据库端口

}

}

注意:NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建

USER和PASSWORD分别是数据库的用户名和密码。

设置完后,再启动我们的Django项目前,需要激活我们的mysql。

然后,启动项目,会报错:no module named MySQLdb

这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL

所以,我们只需要找到项目里的全局配置里的__init__,py配置数据库驱动

在里面写入:

import pymysql

pymysql.install_as_MySQLdb()

此时django框架连接MySQL数据库配置好了

给PyCharm安装MySQL数据库管理插件

配置数据库信息

下载数据库管理插件

django创建数据库表

在操作数据库表之前,首先检查一下全局配置文件settings.py里的数据库表操作配置里是否配置了应用路径,如果没有需要加入应用路径

INSTALLED_APPS = [

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'app1',

]

配置好了我们开始创建表

对数据库表的操作都是由django下db模块的models对象来操作的,所以需要导入这个对象

注意:一张表对应一个类

首先要创建一个类来操作一张表,而这个类必须继承models.Model对象

注意创建表之前,必须要先创建好数据库

from __future__ import unicode_literals

from django.db import models #导入models对象

class userinfo(models.Model): #创建类必须继承models.Model,类名将是在数据库里的表名称

#不设置主键id将自动创建

anem = models.CharField("用户名",max_length=50) #设置一个anem名称的字符串字段,最大长度50位,在django后台显示名称为:用户名

address = models.CharField("地址", max_length=50)

city = models.CharField('城市', max_length=60)

country = models.CharField(max_length=50)

class Meta:

verbose_name = '用户表' #设置表名称在django后台显示的中文名称

verbose_name_plural = verbose_name

def __str__(self): #设置在django后台显示字段名称

return self.anem

设置好操作表的类后,我们需要生成表,生成表需要在PyCharm的终端输入命令,先输入 makemigrations  然后在输入   migrate   来生成表

此时表就生成了

注意:我们已经生成了需要的表,也包含我们自定义的userinfo表,此时数据库里的django_migrations表记录了,我们生成表时的信息,

如果我们将我们的userinfo表,删除后,在执行命令重建我们的userinfo表,将无法生成,因为django_migrations表记录了你已经生成了

解决方法:

现将项目里migrations目录下的缓存删除

在重新执行命令,makemigrations  然后在输入   migrate   来生成表,会提示你已经生成了这个表

我们打开django_migrations表里找到,与现在migrations目录下缓存名称相同的记录</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值