django ORM 数据库操作mysql,建表连库

表与表之间的关系:

一对多

多对多

一对一

 

不依赖于别的表(有主动权的表)叫做主表

django项目:

第一步:models.py里写类和字段(相当于表);

from django.db import models

# Create your models here.

class Book(models.Model): #必须继承models.Model这个类,jango才能识别Book是一张表
    name=models.CharField(max_length=20)#charfield字符串类型,长度20
    #price=models.FloatField()类似于float可以加上长度小鼠几位。。。
    price=models.IntegerField ()
    pub_date=models.DateField()

第二部:终端terminal写语句,(migrations是应用文件夹下的第一个文件夹名称,自己可改)

python manage.py makemigrations

第三部:终端输入(这两句必须配合使用)

python manage.py migrate

第4部;点击templates文件夹下哪个新生成的数据库标识,在有上方出现新的页面点击加号选择数据库此处sqllit为例,点击它,新页面继续sqlite选择,没有就点击下载,然后把左边template文件夹里的数据库拖入右边新出现的sqlite双击新的db就可查看表,添加信息,

删除:先删db,然后template里的数据库,然后migrations里的除了init另一个py文件

连接mysql:

第一步配置信息:settings里,把原来的databases替换

 

DATABASES = {

    'default': {

        'ENGINE': 'django.db.backends.mysql', 

        'NAME': 'books',    #你的数据库名称

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

        'PASSWORD': '123', #你的数据库密码

        'HOST': '', #你的数据库主机,留空默认为localhost

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

    }

}

 

models。py文件写入类

class Book(models.Model): #必须继承models.Model这个类,jango才能识别Book是一张表
    name=models.CharField(max_length=20)#charfield字符串类型,长度20
    #price=models.FloatField()
    price=models.IntegerField ()
    pub_date=models.DateField()

然后终端python manage.py makemigrations

 当出现 

no module named MySQLdb 换驱动引擎
NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建

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

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

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

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

所以,我们只需要找到项目名文件下的__init__,在里面写入:

import pymysql
pymysql.install_as_MySQLdb()

问题解决!

终端输入python manage.py migrate执行,

mysql先前要建好库名,然后use 库名

mysql输入数据库名,用户名密码,打开就有表了,

 

 

posted @ 2018-08-05 16:22  未来的技术  阅读(148)  评论(1编辑  收藏  举报