文章目录

  • 废 话
  • 一、Navicat for MySQL
    • 1.1 连接数据库
    • 1.2 查询数据库
      • 1.2.1 打开数据库连接
      • 1.2.2 最简单的查询数据
  • 二、创建存储过程
    • 2.1 新建存储过程
    • 2.2 编写一个存储过程
      • 2.2.1 需求
      • 2.2.2 编写存储过程体
  • 三、应用储存过程
    • 3.1 创建Django工程
      • 3.1.1 创建Django工程,命名为【**country**】
      • 3.1.2 创建子应用【world】
    • 3.2 配置文件【settings.py】
      • 3.2.1 安装MySql驱动MySqlClient
      • 3.2.2 数据库连接信息
    • 3.3 路由地址【urls.py】
      • 3.2.1 创建应用路由
      • 3.3.2 添加应用路由到主路由
    • 3.4 创建页面
      • 3.4.1 编写页面代码
      • 3.4.2 查询数据库python实现
  • 四、查看结果
    • 4.1 启动程序
    • 4.2 通过浏览器验证结果
  • 五、总结
  • 附件

废 话

过去初入职场时,使用Microsoft SqlServer进行开发工作,经常使用存储过程解决数据处理问题,很多变化频繁的业务逻辑,如果通过存储过程实现,在变更时,就会显得特别简单和方便。只要通过发布脚本就可实现。不得不说,当年,通过Microsoft SqlServer开发数据库及报表应用,是真的好用。

多年后的今天,发现如今的数据库应用是MySql的天下了,免费开源是真香,使用第三方工具进行MySql的开发还是不错的,不过个人感觉,开发过程不如Microsoft Sql Server官方开发环境使用方便,逻辑性更强,但是谁叫他收费呢,而且还不是一般的贵。

所谓废话少说,接下来直入主题吧。


一、Navicat for MySQL

当然,使用命令行进行开发,也是完全可以的,不过那简直是闲的蛋疼才那样干。学生时候,看到别人在“黑窗口”里敲代码,认为牛的不得了。现在再看到这样做,第一感觉是这人脑子有问题,放着简洁,美观,方便的工具不用,还用最原始的命令方式操作,您咋不用二进制写呢?所以我们选择Navicat for MySQL做为开发工具。

数据库安装过程就不说了,又不用天天安装,某度一下就解决的事。
Navicat for MySQL有绿色版本,不用安装。序列号,自己解决,下点工夫还是能找到的,某宝也就几块钱的事,我觉得与其搜索好几个小时,还不如花几块钱搞定,难道你的几个小时连几块钱都不值吗?

在安装目录下找到美丽的navicat.exe图标,双击之打开开发工具。

1.1 连接数据库

一眼就看到工具栏上有连接图标,这太醒目了,都无法形容了。

打开这个窗口时,发现其实很多内容都已经填好了。如果是安装在本机上的话,只需要随便填个名字(这个时候咱叫他“小甜甜"),密码(这个不能随便输)只有你自己知道。填好之后,“连接测试”一下。他会告诉你是否连接成功。

看到这个提示时,整个人都轻松了很多。

1.2 查询数据库

1.2.1 打开数据库连接

此时我们看到,”小甜甜“已经安静的在房间时等着咱了,还不快点过陪陪他,难道要等到她变成”牛夫人“?

双击”小甜甜“也行,右击”小甜甜“也行。她都会立马开心(打开连接)的。

1.2.2 最简单的查询数据

选择一个数据库,然后【查询->新建查询】就可以打开一个查询窗口。

在窗口里输入最简单的查询语言

select * from country;

”运行“,数据展现在了"结果1”中。

到现在mysql数据库,已经完美的安装,并可正常使用了。开心不!

二、创建存储过程

MySql这个“函数”让我困扰了很久,一度以为MySql不支持存储过程,而我好几年面对的都没有一个对MySql溜的知道这个问题,或都说他们故意不告诉我,因为在Microsoft SqlServer中,函数和存储过程是分开两个节点的,所以创建函数就是创建函数,创建存储过程就是存储过程。而MySql把函数和存储过程都归类在函数的子项。

2.1 新建存储过程

  1. 右键【函数->新建函数】,选择【过程】,【下一步】
  2. 配置参数,注意,这里的类型,选择varchar时,后面需要自己填上长度。否则在使用存储过程时会出错。当然,编写存储过程体时也可以再修改变量。
  3. 【完成】打开编辑窗口。
  4. 存储过程体就写在”BEGIN"和“END"内。在参数区可以对参数进行修改。

2.2 编写一个存储过程

2.2.1 需求

就在上文的样例数据库world中的country表中查询某洲,超过某个数据人口的国家。

2.2.2 编写存储过程体

  1. 常用的查询脚本
    通常使用的查询脚本,例如: 查询亚洲,超过10亿人的国家
# 查询亚洲,超过10亿人的国家
SELECT *
FROM country
WHERE Continent = 'Asia' And Population > 1000000000;
  1. 存储过程
    这时需要把洲(Continent)人口数(Population)作为参数传给存储过程。于是先修改参数为:

    这里要注意,参数名称不可与表字段名称相同。

IN `vContinent` varchar(30),IN `lPopulation` long

编写脚本:

BEGIN#Routine body goes here...SELECT *FROM countryWHERE `Continent` = vContinent And `Population` > lPopulation
;
END

保存存储过程(点【保存】或者Ctrl+s):
填写一个实用的名字就可以了。

执行存储过程(点【运行】)
先输入参数,再【确定

此时在【结果1】中可以看到查询到的结果。

三、应用储存过程

使用Python环境,Django框架查询并显示数据。

3.1 创建Django工程

3.1.1 创建Django工程,命名为【country

这里创建过程忽略

3.1.2 创建子应用【world】

创建过程忽略

3.2 配置文件【settings.py】

打开配置文件【country->country->settings.py】

3.2.1 安装MySql驱动MySqlClient

在命令行直接执行:

pip install mysqlclient

这个大概率会报错。于是我们可以通过把对应文件下载到本地。下载地址就是pip源地址。在源目录里依据机器python版本来选择具体要下载的文件。
清华源的mysqlclient下载连接
下载到本地之后,在命令行导航到下载目录,然后执行pip命令。
下图是下载的mysqlclient 2.0.4版本,实用于python3.6版本的windows64位版本。

执行后,显示mysqlclient成功安装完成。
通过pip list命令列出所有安装的包,可以找到安装好的mysqlclient.

3.2.2 数据库连接信息

  1. 配置充许访问服务器的范围为任何主机
ALLOWED_HOSTS = ["*"]
  1. 添加app到配置文件列表
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','world.apps.WorldConfig',  # 添加创建的应用,也可以写成'world',
]
  1. 修改【DATABASE】默认数据库连接信息为:
DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'world','HOST': 'localhost','PORT': 3306,'USER': 'root','PASSWORD': 'Aa@123456','CHARSET': 'utf8'}
}

3.3 路由地址【urls.py】

打开主路由文件【country->country->urls.py】

添加如下代码,让使可能通过主路由路由到应用中。

path('world/', include("world.urls")),

添加后文件内容如下样式:

from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('world/', include("world.urls")),
]

3.2.1 创建应用路由

在【country->world】目录下创建urls.py文件
可完成后面查询数据代码后再添加这里内容
引用了views.py文件中定义的视图类World。

from django.urls import path
from world.views import Worldapp_name = 'world'
urlpatterns = [path('', World.as_view(), name="world"),]

3.3.2 添加应用路由到主路由

from django.contrib import admin
from django.urls import path, includeurlpatterns = [path('admin/', admin.site.urls),path('world/', include("world.urls")),
]

3.4 创建页面

在目录【country->template】下,创建html文件【index.html】

3.4.1 编写页面代码

这里需要在后端返回名为data的数据集(此代码在【country->world->views.py】文件中实现。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>各大洲的国家</title><style type="text/css">table{background-color: darkgray;}table thead{background-color: deepskyblue;}table tbody{background-color: skyblue;}</style>
</head>
<body>
<form action="" method="post">
{% csrf_token %}
<label for="continentInput">洲:</label><input name="continentInput" id="continentInput">
<label for="populationInput">人口:</label><input name="populationInput" id="populationInput">
<input type="submit" title="查询" value="查询">
{% if data == None %}<h3>{{ strtip }}</h3>
{% else %}<table><thead><th>名称</th><th>洲</th><th>地区</th><th>国土面积</th><th>人口</th></thead><tbody>{% for item in data %}<tr><td>{{ item.1 }}</td><td>{{ item.2 }}</td><td>{{ item.3 }}</td><td>{{ item.4 }}</td><td>{{ item.6 }}</td></tr>{% endfor %}</tbody></table>
{% endif %}
</form>
</body>
</html>

3.4.2 查询数据库python实现

打开【country->world->views.py】文件,编辑如下代码:

from django.shortcuts import render# Create your views here.
from django.views import View
from django.db import connectionclass World(View):def get(self, request):strtip = '请通过洲名和人口数查询'data = Nonereturn render(request, template_name="world/index.html", context=locals())def post(self, request):continent_name = request.POST.get("continentInput", '')population = request.POST.get("populationInput", 0)with connection.cursor() as cursor:sql = "call sp_get_countrys(%(continent)s,%(population)s)"params = {'continent': continent_name,'population': population,}# callproc 无法返回数据表# cursor.callproc(sql, params=params)cursor.execute(sql, params)data = cursor.fetchall()print(data)return render(request, template_name="world/index.html", context=locals())

四、查看结果

4.1 启动程序

  1. 确认命令行当前位于根目录,即manage.py文件所在的目录。
  2. 输入启动命令
python manage.py runserver 0.0.0.0:8000

如下样式,表示工程成功启动,就可以通过浏览器打开页面了。


(country) D:\PyCharm 4.5.3\MyProject\01.查询MySql数据\country>python manage.py runserver 0.0.0.0:8000
Watching for file changes with StatReloader
Performing system checks...System check identified no issues (0 silenced).
July 09, 2022 - 19:13:56
Django version 3.2.14, using settings 'country.settings'
Starting development server at http://0.0.0.0:8000/
Quit the server with CTRL-BREAK.

4.2 通过浏览器验证结果

  1. 在浏览器地址栏输入url:
http://127.0.0.1:8000/world/
或者
http://localhost:8000/world/
  1. 浏览器加载出这样的内容,这是从后台get到的内容。
  2. 输入参数(Asia, 100000000)点击【查询】:

    在亚洲,人口数量大于100000000的国家列表就显示出来了。

五、总结

内容较多,包括了前端后端,数据库等,并非难点知识。但要学会这些,还是有不少内容的。比如sql语言,Html,python,还要熟悉django框架。

尽量详细的描述,希望能给已经做好心理准备想做码农的有所帮助。

一向的目的就是能让一点都不懂的读者,在不用消耗太多脑细胞的情况下,能够完整的理解知识。

附件

本文源码下载

MySql使用存储过程开发相关推荐

  1. mysql存储过程在实际开发中怎么用_MYSQL存储过程开发中怎么使用游标嵌套

    mysql存储过程开发中如何使用游标嵌套 在实际业务逻辑开发中,难免用到游标嵌套,举例如下: delimiter // drop procedure if exists good_nested_cur ...

  2. mysql %type_mysql 存储过程 %type

    MYSQL修改存储过程的访问权限 版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/inforstack/article/details/80547478 ...

  3. MySQL 之 存储过程

    一.初识存储过程 1.什么是存储过程 存储过程是在大型数据库系统中一组为了完成特定功能的SQL语句集,存储在数据库中.存储过程经过第一次编译后,再次调用不需要编译,用户可以通过指定的存储过程名和给出一 ...

  4. 《大型数据库技术》MySQL的进阶开发技巧

    MySQL的进阶开发技巧 1.MySQL的存储过程 1.1 创建企业销售系统的数据库,命名为salesdb 1.2 创建一张商品销售表,命名为salerecords,包括如下字段:商品ID,商品名称, ...

  5. MySQL生产库开发规范

    MySQL开发规范 文件状态: [  ] 草稿 [√] 正式发布 [  ] 正在修改 文件标识:   当前版本: V1.0  作    者: 贺磊  完成日期: 2016-05-24 变更记录 序号  ...

  6. MySQL的存储过程优缺点

    MySQL的存储过程优缺点 1.存储过程概念 存储过程是一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序通过存储过程名字调用,也可以从另一个存储过程或触发器调用. ...

  7. MySQL之存储过程及函数的使用

    MySQL之存储过程及函数的使用 4.存储过程和函数 4.1 存储过程和函数概述 存储过程和函数是 事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作 ...

  8. mysql 查询存储过程 速度_查询mysql过程

    MySql 使用explain分析查询 今天写了个慢到哭的查询,想用explain分析下执行计划,后来发现explain也是有局限性的: EXPLAIN不会告诉你关于触发器.存储过程的信息或用户自定义 ...

  9. MySql的存储过程的优点与缺点

    MySql的存储过程的优点与缺点 一.存储过程优点 二.存储过程的弊端 三.总结 总结下使用存储过程的优缺点 一.存储过程优点 存储过程是一组预先创建并用指定的名称存储在数据库服务器上的 SQL 语句 ...

  10. mysql 电子书_MySQL开发与实践 (付森等著) 中文pdf扫描版[45MB]

    本书作为MySQL课程的教材 系统全面地介绍了有关MySQL数据库应用开发所涉及的各类知识.全书共分16章 内容包括数据库基础.MySQL概述.MySQL语言基础.数据库和表的操作.数据库的查询.索引 ...

最新文章

  1. 网络带宽由什么决定_加工中心价格分析,加工中心价格是由什么决定的呢?
  2. 怎么将excel中的url批量转化为图片_阿里云+Power BI,轻松实现图片可视化报告(一)...
  3. SAP 报表程序的一些标准功能码
  4. phpcms下的邮箱设置
  5. 13-一对多左连接查询分步查询(查询所有客户及客户对应的订单)
  6. 怎么把图片上的字去掉_视频片头怎么减掉,电脑如何剪切掉视频的开头「视频批量剪辑」...
  7. 动态调试 ida linux,IDA动态调试-ELF
  8. OSPFv3中LSA详解(五)——Intra-Area-Prefix LSA详解
  9. tomcat,tomcat7配置https
  10. OpenAnolis社区致Linux开发者的一封信
  11. 数据库课程设计报告格式模版
  12. 《从零开始学架构:照着做,你也能成为架构师》李运华 读后感
  13. git删除多余的tracked文件(git提示ignored tracked with git)
  14. 用Boost::spirit库写C++的源代码解析器(一) 一个简单的例子:解析enum的解析器雏形
  15. Qt的主窗口背景设置
  16. python的打开界面_Python 实现炫酷的启动界面
  17. iOS 手机 邮箱 正则表达式
  18. 程序员找工作有哪些渠道?
  19. 作为一个移动应用开发者,我们的创意应当避免走向低俗
  20. 【ARM指令】LDRD与STRD

热门文章

  1. codeforces1428F Fruit Sequences
  2. 搭建个人网站--域名解析(DNS)
  3. 《信心——是什么?导致什么?》_司布真
  4. 【Windows 11】终端美化配置(优化)
  5. 介绍中国传统节日的网页html,关于中国传统节日介绍的作文
  6. c语言最大乘积问题,利用C语言来求最大连续子序列乘积的方法
  7. 人这一辈子,都在为选择买单
  8. 删除后别人的微信号变成wxid_一不小心删除了好友,怎么办?
  9. Android使用串口打印机打印图片方法
  10. 关于阅读论文的一些感想