码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【Django】开发日报_2.1_Day:数据库操作


    目录

    1、python连接mysql基本语法

    2、Django框架数据库操作-ORM框架

     2.1 安装第三方模块

    3、使用ORM框架

    3.1、创建数据库

    3.2 django连接数据库

    3.3 django操作数据表

    (1)创建表

    创建表示例:

    (2)删除表

    (3)修改表结构


    1、python连接mysql基本语法

     2、Django框架数据库操作-ORM框架

    ORM可以将复杂的代码简单化,通过orn这个中间组将我们写的代码翻译成标准的sql语句,能大大减少我们的开发成本。

     2.1 安装第三方模块

    pip install mysqlclient

    安装失败:

    解决办法:mysqlclient安装 - 远山渡月 - 博客园

     去这个网站找轮子

    https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient

     下载对应的python版本

     然后将文件拷贝到项目文件夹:

    回到终端下载:

     pip install mysqlclient-1.4.6-cp37-cp37m-win_amd64.whl
    

     完成:

     在设置中也能看到

    3、使用ORM框架

     由上面的两点可知,Django并不能帮我们创建数据库,所以我们需要在mysql中自己创建数据库。

    3.1、创建数据库

    create database djangotest1 default charset=utf8;

    3.2 django连接数据库

     在setting.py文件中进行修改:

    1. DATABASES = {
    2. 'default': {
    3. 'ENGINE': 'django.db.backends.mysql',
    4. 'NAME': 'djangotest1',
    5. 'USER': 'root',
    6. 'PASSWORD': '123456',
    7. 'HOST': '127.0.0.1',
    8. 'PORT': '3306',
    9. }
    10. }

    3.3 django操作数据表

    (1)创建表

    在app->models.py中编写代码:

    1. from django.db import models
    2. # Create your models here.
    3. class UserInfo(models.Model):
    4. name = models.CharField(max_length=32)
    5. password = models.CharField(max_length=64)
    6. age = models.IntegerField()

    解读:

    models中的类,其实就是Django创建的表,Django会将python类语法翻译成sql语句:

     在终端输入指令:

    1. # 迁移数据库
    2. python manage.py makemigrations
    3. python manage.py migrate

    如果报错

     说明:

     Django raise MigrationSchemaMissing(Unable to create the django_migrations table (%s) % exc)(亲测)_gb4215287的博客-CSDN博客

     解决办法,升级mysql

    mysql升级5.6_MySQL从5.5升级到5.6_陈易铭的博客-CSDN博客

    卸载mysql

    https://www.jb51.net/article/231519.htm

    https://jingyan.baidu.com/article/1e5468f921400f484961b7d1.html

    安装mysql

    mysql数据库安装(详细)_体会!的博客-CSDN博客_mysql安装

     MySQL的安装(完整版)_幺妹儿儿的博客-CSDN博客_安装mysql

    如果还有报错:

    解决Windows下django.db.utils.OperationalError: (2026, ‘SSL connection error: unknown error number‘)问题_车陂IT仔的博客-CSDN博客 上面的方法试了n边,tnd不知道是我8.30的版本不合适还是咋的,就是不好使。

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    经过我一番折腾,发现5.5版本和5.8版本的mysql都不适合于Django连用,为什么?

    听我给你说说血与泪:

    5.5的mysql,Django爱答不理,

     5.8的mysql,Django高攀不起。

     Django服务器安装ssl证书,通过django中的ssl证书进行用户身份验证_温特二Winter的博客-CSDN博客

    所以建议,使用5.6和5.7的正好,因为5.6没有ssl,5.7默认关闭ssl。

    !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    现在走到这一步,只能卸载重装。

    o(╥﹏╥)o

    django支持什么版本的mysql_实战分享丨MySQL 与Django版本匹配相关经验_时光琉璃盏的博客-CSDN博客

     

     搏一搏单车变摩托!

    下载5.7

     安装MySQL的安装(完整版)_幺妹儿儿的博客-CSDN博客_安装mysql

    在mysql中进行查询:

    可以看到表已经建好了。

     结构与类中的一样

     其他的表是Django中注册的默认表,实现一些内部功能:

    创建表示例:

    app->models.py

    1. from django.db import models
    2. # Create your models here.
    3. class UserInfo2(models.Model):
    4. name = models.CharField(max_length=32)
    5. password = models.CharField(max_length=64)
    6. age = models.IntegerField()
    7. class Department(models.Model):
    8. title = models.CharField(max_length=50)
    9. class Employee(models.Model):
    10. position = models.CharField(max_length=50)

    终端输入指令:

    1. python manage.py makemigrations
    2. python manage.py migrate

     

    查看数据库:

     

    可以观察发现,我们的表名其实就是:app模块名+models里的类名 

    (2)删除表

    直接将要删除的对应类的代码注释或者删掉

    再在终端执行命令

    1. python manage.py makemigrations
    2. python manage.py migrate

    查看,表已经删除

    (3)修改表结构

    删除字段,注释或直接删除相应代码,并在终端执行指令:

     

     

    增加字段时,先写好相应的变量:

    1. class Department(models.Model):
    2. title = models.CharField(max_length=50)
    3. Dep_No = models.IntegerField(default=10)
    4. Dep_Na = models.CharField(max_length=100)

    然后输入指令:

    1. python manage.py makemigrations
    2. python manage.py migrate

     再在终端输入选项:

    1、现在提供一次性默认值(将在所有现有行上设置,该列的值为空)

            直接在终端赋值即可。

    2、退出,让我在models.py中添加一个默认值

            在字段后面加上,default = ?

    设置默认为空:

    Dep_data = models.IntegerField(null=True,blank=True)

    切记,每次修改完表的结构,都有使用数据库迁移指令,重新构造数据表:

    1. python manage.py makemigrations
    2. python manage.py migrate

    总结:

    :

  • 相关阅读:
    libvirt vcpu热插拔报错:failed to find appropriate hotpluggable vcpus
    【每日一题Day331】LC2560打家劫舍 IV | 二分查找 + 贪心
    月木学途开发 6.网址模块
    我是如何写作的?
    分享面试阿里、京东、网易等大厂后的面经及面试心得,让你秋招不再害怕
    TCP/IP协议专栏——ND 详解——网络入门和工程维护必看
    TVS专业术语解读
    有一个带头结点的单链表L,设计一个算法使其元素递增有序
    Mybatis使用中的坑
    仅做笔记用:Stable Diffusion 通过 ControlNet 扩展图片 / 扩图
  • 原文地址:https://blog.csdn.net/qq_51701007/article/details/126796772
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号