Django框架(十):Models之ORM(sqilte数据库、mysql数据库在django中如何快速创建表,如何在pycharm中操作)

一、数据库的配置

1.django默认支持s'q'li'te,mysql,oracle,postgresql数据库

             <1>sqlite:django默认使用sqlite数据库,默认自带sqlite的数据库驱动,引擎名称:django.db.backends.sqlite3

             <2>mysql:引擎名称:django.db.backends.mysql

2.mysql驱动程序

  • MySQLdb(mysql python)
  • mysqlclient
  • MySQL
  • PyMySQL(纯python的mysql驱动程序)

二、创建数据表

1.首先,已创建sqlite数据表为例:

1.要创建数据表,就要选择数据库,选择数据库的地方是setting.py文件,里面有DATABASES配置,默认是sqlite数据库,因为引擎ENGINE:django.db.backends.sqlite3;且有了NAME;表示已默认有了一个sqlite数据库,名字:db.sqlite3

2.创建表的目录,app应用的models.py文件里面;

说明:在数据库中,一个表,就类似于python中的一个类class;所以,创建一个表,就是创建一个类;例如:

创建一个书籍表,BOOK表,包含字段:名称、价格、出版日期;

from django.db import models     #导入models包
# Create your models here.

class Book(models.Model):#创建数据表必须继承models里面的Models类
    name=models.CharField(max_length=20,verbose_name="名称")#创建字段 格式:key = models.数据类型(限制),verbose_name:表示别名,即:如果web页面要显示,则显示该名称,也可不用verbose_name字段,而直接在第一个字段写别名;
    price=models.FloatField()
    pub_date=models.DateField()
    #CharField、FloatField、DataField():字符串,浮点型,时间类型
    #即:类型都是Field相关的

ok,接下来需要让django按照你创建的class类,去数据库生成对应的表,方式:分两步走;

第一步:在Terminal终端去运行:python manage.py makemigrations

python manage.py makemigrations

执行完后,可以在app应用中的migrations目录下,看到:0001_inittial.py,在这个目录里面,我们可以看到:

name=类名,字段对应你models.py里面创建的字段;且给你默认添加了id字段,默认主键;如果你本来就设置了主键,django就不给你默认了;

第二步:在Terminal终端执行:python manage.py migrate;使数据库里面有数据表;

python manage.py migrate

此时,它在数据库中生成了好几张表,默认需要创建的表,其中,就包含了我们创建的表BOOK;

这是时候,pycharm旁边的目录有一个:db.sqlite3,这就是django给你项目创建的唯一的数据库;

问:如何查看数据库中的内容?

解:第一步:python右边有database标签显示;点击

第二步:点击“+”---》选择Data Source ---》选择:Sqlite(Xerial)

第三步:弹窗中,点击Sqlite(Xerial)--->如果没有下载,就会显示“Download……”相关文字,此时点击,下载;如果没有显示download,就表示你曾经下载过;

第四步:下载完成后,点击apply,再点击ok按钮

第五步:左边会出现一个sqlite的图标,此时,将左边的db.sqlite3推拽到这个图标上,就显示ok

可以看出,表名,django自动给加上了app的名称,在多个app应用下,以示区分;

问:如何使用pycharm在django项目添加数据?

解:在弹出数据表的页面后,点击“+”;出现数据库表的输入框,即可添加数据;

问:如何删除数据库sqlite?

解:第一步:右键数据库名称,点击Ramove

第二步:右键右边的db.splite3,点击Delete, 同时要删掉app应用中的migrations目录下的0001_inittial.py

二、在django中修改settings.py中的DATABASE配置,将sqlite换成MySQL数据库连接、及创建mysql数据表

mysql8版本与Django连接需要修改:https://blog.csdn.net/qq_41854146/article/details/106939059

步骤一:在settings.py文件中,将原有的DATABASES配置隐掉;重新编写DATABASES配置,前提:你必须先创建一个mysql数据库,把名字name填写在配置中,即:告知django你要连接的数据库;

settings.py配置:

DATABASES = {
    'default':{
        'ENGINE':'django.db.backends.mysql',
        'NAME':'auto_test',#你的数据库名称
        'USER':'root',#你的数据库用户名
        'PASSWORD':'123456',#你的数据库密码
        'HOST':'192.168.1.237',#你连接的数据库主机ip,本机不填,默认为localhost
        'PORT':'3306',#你的数据库端口
    }
}

若此时,运行python manage.py makemigrations,会报错:

所以,第二步:需要在django项目的公共部分的init.py文件中,输入:

import pymysql
pymysql.install_as_MySQLdb()

这两句话的意思,就是告知django,数据库驱动引擎别用mysqldb了(mysqldb是python2使用的),换成pymysql;如图:

第三步:此时正是在Terminal终端中,运行:python manage.py makemigrations

如果没有报错,就进行第四步;

如果报错:django.core.exceptions.ImproperlyConfigured: mysqlclient 1.3.13 or newer is required; you have 0.9.3.
就找到python的安装路径的:C:\Users\admin\AppData\Local\Programs\Python\Python36\Lib\sitepackages\django\db\backends\mysql\base.py文件;

还有,项目的路径下的django\db\backends\mysql\base.py文件;

如下修改:将文件中的如下代码注释

if version < (1, 3, 3):
    raise ImproperlyConfigured("mysqlclient 1.3.3 or newer is required; you have %s" % Database.__version__)

再运行:python manage.py makemigrations

下面即表示:你成功创建了一个表:BOOK

第四步:在Terminal终端中,执行:python manage.py migrate

就可以在数据库管理工具Nivcat看到数据库中的表了:

三、连接好数据库之后,如何在pycharm中手动操作数据表呢?同样的步骤:

1.点击右边database-->"+"--->Database---->MySQL

2.同样选择MySQL,如果没有下载,就点击下载:

3.接下来,输入要连接的数据库信息,就像上面settings.py文件的DATABASE配置一样:点击Test Connection  连接测试,成功之后,点击apply,点击ok;

结果,可以看到:

四、使用ORM的优点

1.ORM使得我们的通用数据库交互变得简单易行,而且完全不用考虑SQL语句。快速开发,由此而来;而且项目迁移很方便,应该所有的数据库操作都是使用python接口写的,和sql语法关系很少;所以就算你迁移项目使用不一样的数据库,也完全可以成功迁移;(如上面我们操作sqlite和mysql数据库都是用的一套方式

2.可以避免一些新手程序猿手写sql语句带来的性能问题;

五、关于django中modle中指定数据库:app_label = 'tidb'

六、已有数据表,根据数据库反向生成model文件

python manage.py inspectdb --database default tablename1 tablename2 >> app001/models.py

示例:python manage.py inspectdb --database tidb project_step >> app001/models.py

tidb是项目连接的数据库在项目settings.py中,配置的;如上一张截图;

 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冷凝娇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值