zoukankan      html  css  js  c++  java
  • Python+Django+MySQL进行增删查操作

    1.环境

    1.安装Django

    pip 命令安装方法

    pip install Django```
    
    ## 2.是否安装成功
    进入cmd,输入python,输入以下字符,如果没有错误提示,证明按照成功
    
    import django
    
    
    进入你的工作空间,打开cmd输入
    

    django-admin.py

    会出现一堆
    

    Usage: django-admin.py subcommand [options] [args]

    Options:
    -v VERBOSITY, --verbosity=VERBOSITY
    Verbosity level; 0=minimal output, 1=normal output,
    2=verbose output, 3=very verbose output
    –settings=SETTINGS The Python path to a settings module, e.g.
    “myproject.settings.main”. If this isn’t provided, the
    DJANGO_SETTINGS_MODULE environment variable will be
    used.
    –pythonpath=PYTHONPATH
    A directory to add to the Python path, e.g.
    “/home/djangoprojects/myproject”.
    –traceback Raise on exception
    –version show program’s version number and exit
    -h, --help show this help message and exit

    Type 'django-admin.py help ’ for help on a specific subcommand.

    Available subcommands:

    [django]
    check
    cleanup
    compilemessages
    createcachetable
    ……省略部分……

    
    没报错,就可以
    ## 3.创建第一个项目
    使用 django-admin.py 来创建 HelloWorld 项目:
    
    ```django-admin.py startproject HelloWorld```
    最新版的 Django 请使用 django-admin 命令:
    
    ```django-admin startproject HelloWorld```
    创建完成后我们可以查看下项目的目录结构:
    

    $ cd HelloWorld/
    $ tree
    .
    |-- HelloWorld
    | |-- init.py
    | |-- settings.py
    | |-- urls.py
    | -- wsgi.pymanage.py

    
    
    目录说明:
    

    HelloWorld: 项目的容器。
    manage.py: 一个实用的命令行工具,可让你以各种方式与该 Django 项目进行交互。
    HelloWorld/init.py: 一个空文件,告诉 Python 该目录是一个 Python 包。
    HelloWorld/settings.py: 该 Django 项目的设置/配置。
    HelloWorld/urls.py: 该 Django 项目的 URL 声明; 一份由 Django 驱动的网站"目录"。
    HelloWorld/wsgi.py: 一个 WSGI 兼容的 Web 服务器的入口,以便运行你的项目。

    接下来我们进入 HelloWorld 目录输入以下命令,启动服务器:
    
    

    python manage.py runserver 0.0.0.0:8000```

    访问项目 localhost:8000
    如果出现正常的欢迎页面,就证明创建项目成功

    4.HelloWorld

    视图和 URL 配置
    在先前创建的 HelloWorld 目录下的 HelloWorld 目录新建一个 view.py 文件,并输入代码:

    HelloWorld/HelloWorld/view.py 文件代码:

    from django.http import HttpResponse
    
    def hello(request):
        return HttpResponse("Hello world ! ")
    	```
    接着,绑定 URL 与视图函数。打开 urls.py 文件,删除原来代码,将以下代码复制粘贴到 urls.py 文件中:
    
    `HelloWorld/HelloWorld/urls.py` 文件代码:
    

    from django.conf.urls import url

    from . import view

    urlpatterns = [
    url(r’^$’, view.hello),
    ]

    
    
    
    
    
    # 2.创建模板
    `PS:一句话,模板就是静态页面`
    

    在 HelloWorld 目录底下创建 templates 目录并建立 hello.html文件,整个目录结构如下:

    HelloWorld/
    |-- HelloWorld
    | |-- init.py
    | |-- init.pyc
    | |-- settings.py
    | |-- settings.pyc
    | |-- urls.py
    | |-- urls.pyc
    | |-- view.py
    | |-- view.pyc
    | |-- wsgi.py
    | -- wsgi.pyc |-- manage.py– templates
    `-- hello.html

    
    html里面写 
    

    {{ hello }}

    ```

    HelloWorld/HelloWorld/settings.py 文件代码:
    注意注释地方,改这一处即可

    ...TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [BASE_DIR+"/templates",],       # 修改位置
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                ],
            },
        },
    ]
    

    HelloWorld/HelloWorld/view.py 文件代码:

    # -*- coding: utf-8 -*-
     
    #from django.http import HttpResponse
    from django.shortcuts import render
     
    def hello(request):
        context          = {}
        context['hello'] = 'Hello World!'
        return render(request, 'hello.html', context)
    

    我们这里使用 render 来替代之前使用的 HttpResponse。render 还使用了一个字典 context 作为参数。

    context 字典中元素的键值 “hello” 对应了模板中的变量 “{{ hello }}”。

    再访问访问 http://127.0.0.1:8000/hello,可以看到页面
    file

    3.调整页面

    file

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    
    <div>
    <h1>列表</h1>
    <table border="1px" cellpadding="10px" cellspacing="0px">
        <tr>
             <th>ID</th>
             <th>Name</th>
             <th>Age</th>
             <th>操作</th>
        </tr>
        {% for user in userList %}
        <tr>
            <td width="100px">{{ user.ID }}</td>
            <td width="400px">{{ user.USER_NAME }}</td>
            <td width="20px">{{ user.USER_AGE }}</td>
            <td><a href="/delete?id={{user.ID}}">&nbsp;&nbsp;刪除&nbsp;&nbsp;</a></td>
        </tr>
        {% endfor %}
    </table>
    </div>
    
    <hr/>
    
    <div>
    <h1>添加</h1>
    
        <form action="/add" method="get">
            {% csrf_token %}
    <table border="1px" cellpadding="10px" cellspacing="0px">
        <tr>
             <td><span>ID:</span><input type="text" name="id"></td>
             <td><span>Name:</span><input type="text" name="name"></td>
             <td><span>Age:</span><input type="text" name="age"></td>
             <td><input class="button" type="submit"></input></td>
        </tr>
    </table>
    
    </form>
        </div>
    
    </body>
    </html>
    
    
    <style>
        input{
            border: 2px solid black;
            padding-left: 20px;
            font-size: 20px;
        }
        span{
            padding: 20px;
            font-family: "Adobe Devanagari";
            font-weight: bolder;
            font-size: 25px;
        }
        .button{
             70px;
            height: 40px;
            background-color: aquamarine;
            color: cornflowerblue;
             font-weight: bolder;
            font-size: 14px;
            opacity: 0.9;
            border-radius: 10px;
        }
        hr{
             80%;
            height: 2px;
            margin: 20px;
        }
        a{
             220px;
            height: 40px;
            background-color: deepskyblue;
            color: black;
            font-weight: bolder;
            font-size: 14px;
            opacity: 0.9;
            border-radius: 10px;
        }
    </style>
    

    4.写逻辑代码

    #from django.http import HttpResponse
    
    import pymysql # 数据库驱动
    from django.http import HttpResponse # http响应
    from django.shortcuts import render #跳转页面
    from django.views.decorators import csrf
    
    #数据库连接
    connection = pymysql.connect(host='127.0.0.1', port=3306, user='root',
                                 password='root', db='test',charset='utf8',
                                 cursorclass=pymysql.cursors.DictCursor)
    #创建数据库连接“执行”对象
    cur = connection.cursor()
    
    
    #当我第一次进页面的时候,查询全部
    def hello(request):
        context = {} #封装返回参数
        sql = "SELECT * FROM user_py"
        # 执行SQL语句
        cur.execute(sql)
        # 获取所有记录列表
        results = cur.fetchall()  #查询所有
        context['userList'] = results  #存入集合
        return render(request, 'index.html', context) #request,地址,参数
    
    # 无视这个方法
    def test():
        print("test -- ")
    
    
    # 添加
    def add(request):
        request.encoding = 'utf-8'
        fuck = str(request) #这边获取的是url
        values = fuck.split('?')[-1].rstrip("'>") #对url进行处理
        param_list = values.split('&') # 获取请求参数集合list
        print(param_list[1]) # 不获取第0个,第0个为token,从第一个获取
        print(param_list[2]) 
        print(param_list[3])
    
        id = param_list[1].split('=')[1] #这边进行分割,因为原始字符串为 “id=1”
        name = param_list[2].split('=')[1]
        age = param_list[3].split('=')[1]
    
        print(id,name,age)
        insert_sql = f"""INSERT INTO USER_PY(`ID`,`USER_NAME`,`USER_AGE`)values({id},"{name}",{age})"""
        print(insert_sql)
        cur.execute(insert_sql)
        connection.commit() # 这边注意一定要提交
        print("插入成功")
        return HttpResponse(request)
    
    
    # 删除
    def delete(request):
        request.encoding = 'utf-8'
        fuck = str(request)
        values = fuck.split('?')[-1].rstrip("'>")
        param_list = values.split('&')
        id = param_list[0].split('=')[1]
    
        delete_sql = "DELETE FROM USER_PY WHERE ID = " + id
        cur.execute(delete_sql)
        print("删除成功")
        connection.commit()
        return HttpResponse(request)
    
    # def hello(request):
    #     return HttpResponse("Hello world ! ")
    

    5.页面

    file

    file

    6.配置路由

    file

    附上一个表结构

    CREATE TABLE `user_py` (
      `ID` int(11) NOT NULL,
      `USER_NAME` char(20) NOT NULL,
      `USER_AGE` int(11) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    

    作者的话

    这边做的比较简陋,点击删除,跳的是空页,添加也是,添加完成后要刷新主页面才会出现新的数据,数据库里面是已经添加成功的。
    工作之余做的,望理解,修改未做,逻辑清楚修改已经不是问题
    全套crud请看《python对mysql增删改查+计算器+九九乘法表》 该篇文章
    如果感觉不错,请点赞,赞赏下哦,点击下面赞赏

  • 相关阅读:
    redis在linux下的安装
    Redis在系统中的使用
    使用ServiceStackRedis操作redis
    Redis命令
    mongo增删改操作
    mongo c#驱动介绍操作
    LeetCode 19 删除链表的倒数第N个节点
    LeetCode 01 两数之和
    metapath2vec 笔记
    Q&A(一)
  • 原文地址:https://www.cnblogs.com/chengxiaolong/p/10194908.html
Copyright © 2011-2022 走看看