django mysql 创建表_django学习-10.django连接mysql数据库和创建数据表

1.django模型

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

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

MySQL是Web应用中最常用的数据库。

这篇博客,我们将以Mysql作为实例进行介绍。

如果你想了解更多MySQL的基础知识,可以查看该菜鸟教程地址:https://www.runoob.com/mysql/mysql-tutorial.html

2.第三方库mysqlclient的安装

细节:python要操作mysql数据库,需要安装一个第三方库【mysqlclient】,该第三方库【mysqlclient】其实是一个mysql驱动。

2.1.第一步:使用命令【pip install mysqlclient 】,可以下载并安装最新版本的mysqlclient。

456970dccc58aece1d0144dbd8c4ed61.png

2.2.第二步:接着,使用命令【pip list】,可以查看mysqlclient目前版本号。

23a75f44d6903783264b006bc4ac2a33.png

3.python操作mysql的完整步骤(假设这个django项目【helloworld】是全新项目,未创建过一个数据库)

3.1.第一步:我们要在本地mysql数据库创建一个新数据库,比如一个名为【hongjingsheng_project】的新数据库。

细节:

一、因为django自带的orm框架只能操作数据表,不能操作数据库,所以数据库需要我们自己在本地电脑手动用mysql命令行或者用navicate工具进行创建(我选择的是用navicate工具进行创建)。

8784813979a0282043d8a23daa419513.png

05a71ad270b1886b9020c5b864f2e0d2.png

3.2.第二步:接着,我们查看django项目【helloworld】里的路径为【helloworld/helloworld/settings.py】这个py文件里的属性【DATABASES】的系统提供的默认数据。

171e227b70867bdce41fdcf664982e7c.png

细节:属性【DATABASES】的具体使用,可以查看django官方文档地址:https://docs.djangoproject.com/en/3.1/ref/settings/#databases

157e6e4682481d2dbb80c40cb1061d49.png

3.3.第三步:因为我们的django项目【helloworld】需要使用mysql数据库当成存储项目数据的数据库,所以我们接着要对django项目【helloworld】里的路径为【helloworld/helloworld/settings.py】这个py文件里的属性【DATABASES】值进行如下更改。

5dec4bee5cbdf74461b6783f5e1cc998.png

细节:

一、属性【DATABASES】的数据类型为字典,在属性【DATABASES】里的【DATABASES["default"]["ENGINE"]】,这个【ENGINE】含义是:连接数据库驱动的名称。名称有以下几种情况:

django.db.backends.postgresql   连接数据库PostgreSQL

django.db.backends.mysql        连接数据库mysql

django.db.backends.sqlite3      连接数据库sqlite

django.db.backends.oracle       连接数据库oracle

1b5f44a9a8d198cbbe2f7e7eea1c6e89.png

3bcad43e3de46228772dd833cc9a04c1.png

3.4.第四步:我们在django项目【helloworld】里,通过命令行新建一个应用【hello】(在之前博客里有提到这步骤怎么操作,该应用【hello】已创建过了,在这里就不需要重复创建了)。

3.5.第五步:我们将应用【hello】添加到 django项目【helloworld】里的路径【helloworld/helloworld/settings.py 】里的属性 INSTALLED_APPS中,也就是告诉django框架在django项目【helloworld】里有这么一个应用【hello】。(在之前博客里有提到这步骤怎么操作,该应用【hello】已被添加到属性 INSTALLED_APPS,在这里就不需要重复添加了)。

586f1f15d80df7a0f1f09d3ebac60a90.png

3.6.第六步:修改django项目【helloworld】里对应路径【helloworld/hello/models.py】的这个models.py里的代码内容。

7d6ac1db96d8c8a52799c93dba966a9a.png

细节:从上面截图可以看到,我们新建了一个子类Person,子类Person继承自父类models.Model, 这个子类Person有属性name(name表示姓名)和属性age(age表示年龄)。

这里用到了两种类:类CharField和类IntegerField,更多这种类的使用等后续相关博客里再编写。

注意事项:如果要实现创建多个数据表,可以在models.py里创建多个不同类名的类,具体操作可以看官方文档地址:https://docs.djangoproject.com/en/3.1/intro/tutorial02/

08f66dd22a6e7cc8caf0837bb3d81788.png

3.7.第七步:通过相关命令行,在一个指定的数据库里创建相关的表结构/表(备注:表结构其实也就是表,叫法不一样而已)。(在实际开发过程中,【3.7.第七步】这步骤可以忽略,但为了写完整的操作流程,这步也就大概写了一些主要操作内容。)

3.7.1.首先,在还没创建任何一个应用的表结构之前,我们可以看到django项目【helloworld】对应的路径【helloworld/hello/migrations】的该migrations文件夹里只有一个【__init__.py】。

3.7.2.接着,我们在路径【helloworld/】下,

3.7.2.1.首先,假设我们在【settings.py】该脚本文件里把【'ENGINE'】的值错误填写为【 'django.db.backends.'】,然后执行命令行【python manage.py migrate】。(【3.7.2.1】这部分内容只是为了教大家怎么按照报错日志去简单定位问题,可以忽略不看)

1fff2cd1ee7d121deeec46157a23bde0.png

795cec00f621455a0c356f68be267c75.png

细节: 从上图报错信息,我们可以按照报错信息,去认真看下报错信息大概说了啥,可以按照报错信息去简单定位问题,也可以复制相关核心报错信息去百度查找答案。

3.7.2.2.接着,假设我们在【settings.py】该脚本文件里把【'ENGINE'】的值正确填写为【 'django.db.backends.mysql'】,然后第一次成功执行命令行【python manage.py migrate】。

ccbba9722657960982495ac44bcdd108.png

bb83c7a397549265489955735be9612e.png

细节:这些日志表示已经成功帮我们在指定数据库里生成相关的数据表了。

efddee711fc8995b3792388baf13e6cc.png

3.8.第八步:为了让django框架知道我们在具体哪个应用里的models.py里内容有一些变更,需要做接下来的操作。

我们现在以一个应用【hello】为数据来进行接下来的讲解。

3.8.1.首先,我们在路径【helloworld/】下,执行命令行【python manage.py makemigrations hello】。

细节:

一、要迁移一个指定应用名的数据表信息,命令行为【python manage.py makemigrations 应用名】。

二、这个命令行【python manage.py makemigrations hello】执行成功后会实现的功能是:只是会在这个【hello】应用里的唯一文件名为【migrations】的文件里生成相关迁移文件,这些迁移文件有涉及了哪些需要新增和修改的数据表信息,但还不会执行在指定数据库里生成相关数据表的操作!(这些迁移文件在【3.9】章节里提到的一个新命令成功执行后,就会执行在指定数据库里创建相关数据表的操作!)

三、要迁移一个指定django项目里的所有应用的数据表信息,比如迁移我们这个django项目【helloworld】里的所有应用的数据表信息,命令行为【python manage.py makemigrations】。

f237e7e4953384a09b3bc3489c0fe573.png

43e2de691052625f72c0d0d2511046b4.png

3.9.第九步:接着,为了让django框架知道我们要针对哪个应用进行数据表的新增和修改,需要做接下来的操作。

我们现在仍然以一个应用【hello】为数据来进行接下来的讲解。

3.9.1.首先,我们在路径【helloworld/】下,执行命令行【python manage.py migrate hello】。

细节:

一、要在指定数据库里创建一个指定应用名包含的最新的数据表信息,命令行为【python manage.py migrate 应用名】。

二、这个命令行【python manage.py migrate hello】执行成功后会实现的功能是:在指定数据库名为【hongjingsheng_project】的数据库里生成一个应用名为【hello】的应用包含的最新的数据表信息。)

三、要在指定数据库里生成一个指定django项目里的所有应用的数据表信息,比如生成我们这个django项目【helloworld】里的所有应用的数据表信息,命令行为【python manage.py migrate】。

42342f87851d63e6492e753b3a506fc0.png

e35cfe00f7429ba821686cbef6f36ff4.png

细节:

一、生成的数据表的表名的取值规则为:应用名_类名(注意:类名的第一个大写字母会被转化为小写字母)(如:hello_person)。

二、尽管我们没有在【hello】应用里的models.py给person表设置主键,但是django框架会自动添加一个id作为person表的主键。

三、【python manage.py makemigrations】 和 【python manage.py makemigrations 应用名】和 【python manage.py migrate】和【python manage.py migrate 应用名】,这四个命令行的更具体使用和区别可以看下这位大牛写的博客地址:https://blog.csdn.net/hpu_yly_bj/article/details/78928089

三、对于我们而言,目前只要知道这四个命令行大概怎么使用即可,要深入学习的话只能多百度多总结多做笔记多去思考原理!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
python 项目 基于python登录网站验证码的生成与识别系统 近年来随着互联网应用技术的飞速发展,为了确保网站系统平台的安全性,各类网站相继推出了验证码应用技术,通过验证码的应用来帮助缓解暴力破解账户密码、垃圾邮件攻击以及在线虚假投票等安全问题,传统的验证码采用的模式主要通过复杂扭曲的字母数字识别来实现,然而这种验证码的方式往往会引起用户端的反感导致网站平台的流量下降,为了提升用户端的体验感同时又要确保系统平台的安全性,行为式的验证码应运而生。行为式的验证码通常采用图片识别或者滑块游戏的方式来实现,这种验证方式不需要用户端的数据录入只需要鼠标的点击就可以实现,目前行为式的验证码更能够被用户所接受。 此次针对登录网站验证码的生成和识别主要利用了Python技术来实现,开发设计了两种验证码模式:图形验证码以及滑动验证码,图形验证码主要通过动态的图形内容来验证,滑动验证码通过滑动交互的方式来实现拼图缺口的填入,在登录验证的过程中需要确保验证信息的准确性,一旦发生验证错误后台会自动刷新函数来确保验证码的随机性,同时如同一IP验证失败超过最大次数平台会自动锁定冻结账号信息,验证码可以帮助提升系统平台登录的安全性,防止暴力破解账户信息的情况发生。 关键词:Python语言;Django框架; 图形验证码;滑动验证码
Django 架构中,一般使用 Django 自带的 ORM(Object-Relational Mapping)来操作数据库。ORM 是一种将关系数据库中的数据映射到对象的技术,将程序中的对象转换为数据库中的记录,从而实现对数据库的操作。 不过,如果你想直接使用 MySQL Connector/Python 驱动来连接 MySQL 数据库,可以在 Django 项目中的 `__init__.py` 文件中进行相关配置。具体配置如下: 1. 安装 MySQL Connector/Python 驱动,可以使用 pip 命令进行安装: ``` pip install mysql-connector-python ``` 2. 在 Django 项目的 `__init__.py` 文件中添加以下代码: ```python import mysql.connector from django.db.backends.mysql.base import DatabaseWrapper # 定义 MySQL Connector/Python 驱动的数据库连接参数 cnx = mysql.connector.connect(user='your_username', password='your_password', host='your_host', database='your_database') # 重写 DjangoMySQL 数据库连接方法 class MySQLDatabaseWrapper(DatabaseWrapper): def get_new_connection(self, conn_params): return cnx # 注册 MySQLDatabaseWrapper DatabaseWrapper.register_backend('mysql.connector', 'django.db.backends.mysql.base', 'MySQLDatabaseWrapper') ``` 需要将上述代码中的 `your_username`、`your_password`、`your_host` 和 `your_database` 替换为实际的数据库连接参数。 3. 在 Django 项目的 `settings.py` 文件中,将 `DATABASES` 配置中的 `ENGINE` 改为 `django.db.backends.mysql.connector`,如下所示: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql.connector', 'NAME': 'your_database', 'USER': 'your_username', 'PASSWORD': 'your_password', 'HOST': 'your_host', 'PORT': 'your_port', } } ``` 需要将上述代码中的 `your_username`、`your_password`、`your_host`、`your_database` 和 `your_port` 替换为实际的数据库连接参数。 这样,就可以在 Django 项目中使用 MySQL Connector/Python 驱动来连接 MySQL 数据库了。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值