广告
返回顶部
首页 > 资讯 > 后端开发 > Python >diango使用数据库
  • 388
分享到

diango使用数据库

数据库diango 2023-01-30 22:01:58 388人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

之前写的页面,虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。使用数据库是毫无疑问的,Django通过自带的ORM框架操作数据库,并且自带轻量级的sqlite3数据库。我不想使用自带的数据库,就

之前写的页面,虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。


使用数据库是毫无疑问的,Django通过自带的ORM框架操作数据库,并且自带轻量级的sqlite3数据库。

我不想使用自带的数据库,就是要使用Mysql。这里,我已经安装好了mysql,并且启动了。


windows版的MySQ安装,请参考以下文章

https://www.cnblogs.com/xiao987334176/p/9167038.html


linux版的MySQ安装,请参考以下文章

Http://www.py3study.com/Article/details/id/296.html



首先是注册app:

修改mysite下的settings.py文件,注册你的app。最后一行添加,我用的app名是blog

INSTALLED_APPS = [
    'djanGo.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog',
]

不注册它,你的数据库就不知道该给哪个app创建表。


然后我们在settings中,配置数据库相关的参数,如果使用自带的sqlite,不需要修改。

DATABASES = {
    # 'default': {
    #     'ENGINE': 'django.db.backends.sqlite3',
    #     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    # }
    'default': {
        'ENGINE': 'django.db.backends.mysql',   # 数据库引擎mysql
        'NAME': 'db2',       # 你要存储数据的库名,事先要创建之
        'USER': 'root',      # 数据库用户名
        'PASSWord': '',      # 密码
        'HOST': 'localhost', # 主机
        'PORT': '3306',      # 数据库使用的端口
    }
}

再编辑blog目录下的models.py文件,也就是MTV中的M。

from django.db import models

# Create your models here.
#必须要继承models.Model类,这个固定写法。这里表示创建表Users
class Users(models.Model):
    #创建username字段,类似是varchar,最大长度是20
    username = models.FileField(max_length=20)
    password = models.FileField(max_length=32)
    email = models.FileField(max_length=30)

这里我们创建了3个字段,分别保存用户的名字、密码、邮箱。


接下来要在PyCharm的teminal中通过命令创建数据库的表了。有2条命令,分别是:


python manage.py makemigrations

1529114755358511.png

它的作用相当于 在该app下建立 migrations目录,并记录下你所有的关于modes.py的改动,比如0001_initial.py, 但是这个改动还没有作用到数据库文件


再输入命令:

python manage.py migrate

blob.png

它是将该改动作用到数据库文件,比如创建表,修改表字段之类的操作。


修改mysite目录下的urls.py,删除不用的路由

from django.contrib import admin
from django.urls import path
from blog import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('userInfo/', views.userInfo),
]


修改blog目录下的views.py文件,改动里面业务逻辑,完整代码如下:

from django.shortcuts import render,HttpResponse
from blog import models

def userInfo(req):
    #判断请求类型
    if req.method == "POST":
        #获取表单数据,如果获取不到,则为None
        user = req.POST.get("username",None)
        pwd = req.POST.get("password", None)
        email = req.POST.get("email", None)
        #create是django内部封装的方法,用来插入一条数据
        #添加数据到数据库中,等式左边是数据库字段,等式右边是从用户那里接受的数据
        models.Users.objects.create(username=user,password=pwd,email=email)
    #从数据库读取所有的行,返回一个对象
    user_list = models.Users.objects.all()
    print(type(user_list))
    # 将对象传给模板index.html
    return render(req, "index.html", {"user_list": user_list})

修改templates下的index.html,代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="/userInfo/" method="post">
    <p>姓名<input type="text" name="username"/></p>
    <p>密码<input type="text" name="password"/></p>
    <p>邮箱<input type="text" name="email"/></p>
    <p><input type="submit" value="提交"/></p>
</form>

{#判断列表有数据的情况下#}
{% if user_list %}
    <hr/>
    <h1>数据展示</h1>
    {#border-collapse属性显示细线表格#}
 <table border="1" cellspacing="0" bordercolor="#000000" style="border-collapse:collapse;">
        <tr>
            <td>姓名</td>
            <td>密码</td>
            <td>邮箱</td>
        </tr>
        {#使用for循环遍历列表#}
 {% for i in user_list %}
            <tr>
                {#展示数据#}
 <td>{{i.username}}</td>
                <td>{{i.password}}</td>
                <td>{{i.email}}</td>
            </tr>
        {#结束for循环#}
 {% endfor %}
    </table>
{#一定要写结束符#}
{% endif %}

</body>
</html>

最后还要安装2个模块,否则重启WEB项目时,提示找不到mysqlclient

pip3 install pymysql

pip3 install mysqlclient


关闭pycharm,再次启动pycharm,启动mysite项目


访问页面

http://127.0.0.1:8000/userInfo/

blob.png

点击提交按钮,下面就有数据展示

blob.png


使用navicat软件连接MySQL,查看表数据

blob.png


之后和用户交互的数据都能保存到数据库中。任何时候都可以从数据库中读取数据,展示到页面上。

至此,一个要素齐全,主体框架展示清晰的django项目完成了,其实很简单是不是?


Django总结

作为python必学web框架的Django,它的功能强大,内容全面,但同时也意味着限制颇多,灵活性低,可修改性差,这就是鱼和熊掌不可兼得了。我们学习Django,其实就是学习一个软件,要理解它的基本原理,把握它整体框架,牢记一些基本规则,剩下的就是不断深入细节,然后熟能生巧、经验多少的问题了,不存在多高深的不可掌握技术。


关于学习方法的建议:学习任何东西,不要直接扎入细节,应该先了解它的外围知识,看看它的整体架构,再学习它的基本内容,然后才是深入学习,打磨技巧!


--结束END--

本文标题: diango使用数据库

本文链接: https://www.lsjlt.com/news/179141.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • diango使用数据库
    之前写的页面,虽然和用户交互得很好,但并没有保存任何数据,页面一旦关闭,或服务器重启,一切都将回到原始状态。使用数据库是毫无疑问的,django通过自带的ORM框架操作数据库,并且自带轻量级的sqlite3数据库。我不想使用自带的数据库,就...
    99+
    2023-01-30
    数据库 diango
  • python使用数据库
    使用python-DB-API,只需要搞清楚Connection、Cursor对象,打开后一定得关闭。Cursor对象执行insert、update、delete,结果由rowcount返回影响的行数,拿到执行结果。Cursor对...
    99+
    2023-01-31
    数据库 python
  • python数据库操作--数据库使用概述
    目录1. 数据库基础知识2. 访问数据库基本原理1.应用系统2.数据库驱动程序 3.数据库系统3. ODBC与ADO1.** ODBC**2.ADO4. 关系型数据库总结1. 数据库基础知识 数据库(DB...
    99+
    2022-06-02
    python 数据库使用
  • 使用Python操作MySql数据库和MsSql数据库
    目录一、MySQL数据库模块的安装和连接1、 PyMySQL模块的安装2 、python连接数据库二、创建表操作三、操作数据1、插入操作2、 查询操作3、 更新操作4、 删除操作四、...
    99+
    2022-11-11
  • (数据库)SQLite的使用
        数据库的应用相当广泛,可以应用在Java、Android、IOS、Windows等所有主要的操作系统上SQLite虽然是轻量级的小引擎,但是能够支持高达2TB...
    99+
    2022-10-18
  • 数据库基本使用
    1.登录和退出mysql服务器:mysql -h主机名 -u用户名 -p密码 -e"sql 命令" 例1:mysql -uroot -p123456 ...
    99+
    2022-10-18
  • PostgreSQL数据库使用 (三)
     系统: Ubuntu 16.04.4 LTS  PostgreSQL数据库: PostgreSQL 10.5 varchar(80)...
    99+
    2022-10-18
  • Android 安卓数据库 sqlite android自带数据库使用
    Android 安卓数据库 Android是有自带的数据库的 原生数据库 public class MySQLiteHelper extends...
    99+
    2022-06-06
    安卓数据库 数据 SQLite 数据库 Android
  • 使用Visual Studio自带数据库配合SqlDataReader 读取数据库数据
    使用Visual Studio自带数据库配合SqlDataReader 读取数据库数据 连接语句:        &...
    99+
    2022-10-18
  • 使用Kettle定时从数据库A同步数据到数据库B
    一、需求背景 由于项目场景原因,需要将A库(MySQL)中的表a、表b、表c中的数据定时T+1 增量的同步到B库(MySQL)。这里说明一下,不是数据库的主从备份,就是普通的数据同步。经过技术调研,发现Kettle挺合适的,原因如下: Ke...
    99+
    2023-08-24
    数据库 mysql
  • JDBC02 利用JDBC连接数据库【使用数据库连接池】
    1 使用Statement执行含有动态信息的SQL语句时有几个不足:  1.1 由于需要将动态数据拼接到SQL语句中,这导致程序复杂度高,容易出错  1.2 拼接的数据若含有SQL语法内容就会导致拼接后的S...
    99+
    2022-10-18
  • 数据库如何使用C++数据结构
    本篇文章为大家展示了数据库如何使用C++数据结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。在编写代码时,堆栈是最常用的C++数据结构,它的概念简单,编写也比较简单,现在举这么个例子,桌子上有堆成...
    99+
    2023-06-17
  • 【大数据】Neo4j 图数据库使用详解
    目录 一、图数据库介绍 1.1 什么是图数据库 1.2 为什么需要图数据库 1.3 图数据库应用领域 二、图数据库Neo4j简介 2.1 Neo4j特性 2.2 Neo4j优点 三、Neo4j数据模型 3.1 图论基础 3.2 属性图模型 ...
    99+
    2023-09-26
    neo4j 图数据库 neo4j使用 neo4j搭建 neo4j查询语法 neo4j查询数据
  • MySQL数据库中XML数据如何使用
    MySQL数据库中XML数据如何使用,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  使用--xml选项将数据导出为XML格式...
    99+
    2022-10-18
  • Java操作数据库——使用连接池连接数据库
    传统方式和连接池方式传统方式的步骤使用传统方式在Java中使用JDBC连接数据库,完成一次数据库的操作,一般有以下几个步骤: 加载驱动。 建立连接。 执行SQL语句。 释放连接。 传统方式的弊端每一次对数据库的操作都要建立一次连接,并且会将...
    99+
    2014-08-26
    java基础 java 连接池
  • 数据库insert怎么使用
    要使用数据库的INSERT语句,您需要以下步骤:1. 连接到数据库:您需要使用您选择的编程语言和数据库连接库来连接到数据库。连接到数...
    99+
    2023-08-25
    数据库 insert
  • 数据库smalldatetime如何使用
    在数据库中,smalldatetime是一种日期时间数据类型,它用于存储日期和时间,精确到分钟级别。smalldatetime类型使...
    99+
    2023-09-22
    数据库
  • 数据库orderby怎么使用
    ORDER BY语句是用来对查询结果进行排序的。它可以根据一个或多个列进行排序,并可以指定排序的顺序(升序或降序)。使用ORDER ...
    99+
    2023-09-21
    数据库
  • 使用jsch连接数据库
    通过java的jsch连接远程数据库有时候我们本地代码可能无法连接数据库,因为数据库增加了白名单,指定ip的服务器才可以连接到数据库,不过我们可以通过连接该指定ip的服务器,然后通过该服务器连接数据库,就像...
    99+
    2022-10-18
  • 闪回数据库的使用
    oracle闪回技术-----使用闪回日志来恢复用户的逻辑错误,这种修复只针对用户逻辑错误的恢复,而不涉及整个数据库的恢复 恢复更具有针对性而且恢复时间大大减少。 对于闪回数据库而言,闪回日志不...
    99+
    2022-10-18
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作