基于Python框架的农业信息共享平台研究
2021-07-07谢树仁邓凯成喻琨陈政
谢树仁 邓凯成 喻琨 陈政
摘 要:以研究和实现基于网络的农业信息共享平台为核心,以湖南省衡阳市农业信息共享平台的应用为案例,研究的内容包括衡阳市农户在基于Python框架的农业信息共享平台的基础上运用该平台搜索农业新闻动态、农业科技信息、市场信息分析与用户分享合作平台。通过开发Python框架的农业信息共享平台,为衡阳市农业相关领域提供一个信息交流平台,使衡阳市农业从业人员能够获得一个较为全面的信息分享平台,为衡阳市农业信息化发展助力。
关键词:农业信息化 信息共享平台 Web Python框架
中图分类号:F323 文献标识码:A
文章编号:1004-4914(2021)05-037-03
一、湖南省衡阳市农业信息共享平台设计
平台概要设计是在系统需求分析完成并形成需求分析手册后,根据需求划分功能模块,并且设计数据表存储功能模块所需数据。该阶段还需要考虑实际问题,比如选择什么样的开发环境,选择什么样的开发技术。概要设计阶段主要完成的任务是把用户的需求用系统所需实现的功能表示出来。Flask-Script是一个Flask扩展,为Flask程序添加了一个命令行解析器。本系统就是在Flask-Script命令行下进行系统调试和运行的。
(一)Flask-SQLAlchemy
ORM(Object-Relational Mapping,对象关系映射)提供一种概念化,易于理解的数据建模方法。ORM方法基于三个核心原则:简单性:以最基本的形式建模数据。交流:数据库结构以任何人都能理解的语言记录。准确性:根据数据模型创建适当标准化的结构。通常,建模者通过从熟悉应用程序但不是熟练数据建模人员的人那里收集信息来开发信息模型。建模者必须能够以非技术企业专家可以理解的概念级别与数据结构进行通信。建模者还必须能够在简单的单元分析中分析样本数据。ORM专门用于改善这种连接。SQLAlchemy是Python中最成熟的ORM框架,资源和文档十分丰富,可以胜任大多数应用场景。
(二)Flask-Bootstrap
Bootstrap是Twitter开源的一个Web前端框架,它提供的用户界面组件可用于创建整洁且有吸引力的网页。要想在程序中集成Bootstrap,显然要对模板做所有必要的改动。不过,更简单的方法是使用一个名为Flask-Bootstrap的Flask扩展、简化集成的过程。
(三)Flask-Login
大多数程序都要进行用户跟踪。用户连接程序时会进行身份认证,通过这一过程,让程序知道自己的身份。程序知道用户是谁后,就能提供有针对性的体验。最常用的认证方法要求用户提供一个身份证明(用户的电子邮件或用户名)和一个密码。Flask-Login为Flask提供了用户会话管理。它处理日常的登入,登出和记住用户的会话。
(四)Flask-Mail
在互联网应用中最基本的功能就是能够给注册用户发送确认邮件,或者给有重置密码需求的用户发送邮件。Flask-Mail扩展可以提供一个基于SMTP的接口,可以在视图函数或命令行中发送邮件。
(五)Flask-Migrate
Flask-Migrate是一个为Flask应用处理SQLAlchemy数据库的迁移扩展,该扩展使用了数据库迁移框架——Alembic。数据库操作可以通过Flask命令行接口或者通过Flask-Script扩展。
(六)baidu-aip
Baidu-aip是百度云提供的AI接口,可以调用百度云提供的语音识别、图像识别、文字识别等功能。
二、数据库设计
实体联系图又被称为E-R(Entity-Relationship)图或实体关联图,在软件开发中主要用于表示系统所需数据之间的关系。实体关联图由实体,实体间的关联和实体属性3个基本成分组成。
(一)数据库实体
通常认为可以客观地区分的事物是实体。实体可以是特定的人和事物,也可以指泛指抽象的概念。關键在于将每个实体之间的特征区分开来,具有相同属性的实体具有相同的特征和属性。使用实体或实体属性来抽象表示一类实体,它由E-R图中的矩形表示,实体名称写在矩形中;例如,学生张三和学生李四是实体。如果它是弱实体,在矩形外部设置实心矩形。
(二)实体属性
用E-R图中的椭圆表示,属性是相对实体;例如,学生的性别、学号等即是属性。如果是多值属性,则在椭圆外设置一个实心椭圆。如果导出,则表示为虚线椭圆。
(三)实体联系
是指信息世界中实体之间的关联,信息世界中实体之间的关联是实体属性之间的关系;实体之间的关系通常是指不同实体集之间的关系。在ER图中,菱形用于指示菱形框架中的接触名称,不相关的边缘连接到相关实体,以及无向侧的接触类型(1 ∶1,1 ∶ n或m ∶ n)。例如,教师给学生讲课,学生有选修关系。如果是弱实体的联系则在菱形外面再套菱形。根据实现用户需求所需的信息划分项目的数据实体:用户角色、用户、用户共享、用户评论和用户关注点。
1.数据实体。用户角色实体:用户角色ID(id),用户角色姓名(role),默认用户角色(default),用户角色允许的操作。
用户实体:用户ID(id),用户邮箱(email),用户名(username),用户角色ID,用户密码(password),用户确认状态(confirm),用户真实姓名(name),用户地址(address),关于我(about_me),注册时间,最近登陆时间,用户头像。
用户分享实体:分享实体ID,分享内容,分享时间,用户ID
用户评论实体:用户评论ID,评论内容,评论状态,用户ID,用户分享ID。
用户关注实体:关注者ID,被关注者ID,关注时间。
2.数据实体联系图(E-R图)。衡阳市农业信息共享平台系统分析下的主要实体都有:用户、用户关注、用户角色、用户评论、用户分享。衡阳市农业信息共享平台数据实体之间的联系见图1。
三、系统功能模块设计
(一)功能模块划分
项目的功能模块根据用户的需求进行划分,必须实现的功能模块有:注册模块、登陆模块、编辑信息模块、重置密码模块、分享模块、评论模块、关注与取消关注模块、禁止评论模块、修改用户权限模块、登出模块;另外,还提供了调用百度AI的功能模块:语音识别模块、图像识别模块、文字识别模块;最后在系统完善过程中还添加了公告模块、数据库操作模块、网络爬虫模块等。
(二)功能模块组织结构
衡阳市农业信息共享平台功能结构图如图2所示,主要包括以下几个功能模块。
注册模块:当非注册用户登陆平台时,该用户只能浏览其他登陆用户的分享和评论;用户进行注册后才能使用较为完整的功能。该模块主要使用了Flask-Mail、Flask-Login、Flask-Moment、Flask-WTF等扩展模块。
浏览模块:所有用户可以浏览登陆用户发布的分享和评论,但是不能进行信息交流和分享。该模块主要使用了Flask-Moment等扩展模块。
登陆模块:当用户注册后,需要通过确认注册邮件进行确认,才可以使用该功能进行登陆;系统根据登陆数据进行判断该用户是否合法,如果不合法将会刷新登陆模块并进行提示。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF等扩展模块。
编辑信息模块:注册用户登陆后方可使用的功能,该功能用于编辑自身信息;非系统管理员用户只能使用编辑自身信息的模块;系统管理员可以编辑其他用户的信息。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-SQLAlchemy等扩展模块。
分享模块:通过富文本框发布全网可看的分享,注册登陆用户均可使用的功能。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
评论模块:对用户的分享进行评论,注册登陆用户均可使用的功能。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
关注与取消关注模块:登陆用户可以关注某些用户,当这些用户发布分享后,登陆用户可以方便快捷地得到这些分享;同样,如果不想关注这些对象,就取消关注即可,这些分享便不会出现在关注者列表中。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
禁止评论模块:将某些用户的不正当评论禁止,使全网用户看不到这些评论;只有评论评审员和系统管理员才能使用的功能。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
修改用户权限模块:修改当前用户的权限;只有系统管理员才能使用的功能。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
重置密码模块:当用户忘记密码时,可以使用该功能实现密码重置。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
登出模块:登陆用户用于从平台中登出,平台清除用户登陆信息;注册登陆用户均可使用的功能。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy等扩展模块。
百度AI功能模块:用户进入百度AI功能模块,系统将调用百度提供的API,实现各种热门的应用场景。该模块主要使用了Flask-Login、Flask-Moment、Flask-WTF、Flask-Migrate、Flask-SQLAlchemy、baidu-aip等扩展模块。
网络爬虫功能模块:用户通过关键字搜索,系统将通过网络爬虫技术获取到某些平台上的相关信息,并将信息显示处理。该模块主要使用了Flask-Bootstrap等扩展模块,见图2。
四、结論与建议
本文主要通过概要设计,选定了系统开发环境,开发系统所用技术,系统体系结构和模式;明确了系统组织结构;设计了系统所需数据表。最终以体系结构图,模式结构图,系统组织结构图和数据表的形式展现。
(一)衡阳市Python框架的农业信息共享平台适用范围
2018年,衡阳市实现地区生产总值3046.03亿元。其中,农林牧渔业总产值582.04亿元,农业产值238.86亿元,占农林牧渔业总产值的41.04%。祁东县是全国的黄花菜之乡,在祁东县主要产地官家嘴镇、太和堂镇,有大约3000户左右的农户在适用基于Python框架的农业信息共享平台。其中,黄土铺镇不仅是湖南省农业特色小镇,而且是全国的黄花菜之乡,黄土铺镇农民积极应用Python框架的农业信息共享平台在黄花菜农作物上进行选种,有效地促进了乡域经济的发展。太和堂镇积极推进Python框架的农业信息共享平台,指导农户利用该平台的专业技术进行农业技术的学习,以提高当地农户的农业专业性水平。
(二)Python框架的农业信息共享平台在农业选种上的运用
衡阳市农民利用充分Python框架的农业信息共享平台,在全国各类经济平台上筛选出当前市场上最受欢迎的经济农作物。然后,再根据衡阳市当地的土地条件,利用Python框架的农业信息共享平台在农作物种子网站上输入需要选种的农产品,利用Python框架的农业信息共享平台的强大功能,选择最优质最便宜的种子来进行培育,这样,既提高了选择农作物品种效率,也适应了市场经济选择的结果,对增收有很大的促进作用,提高了农民的收入。
(三)Python框架的农业信息共享平台在农业技术上的运用
衡阳市农民可以利用Python框架的农业信息共享平台对农作物的专业技术进行专业筛选。选择全国农作物技术指导网站,输入农作物需要的关键性技术,然后进行有选择性的下载、学习。不但可以提高效率,也可以将下载来的农作物的专业技术保存好,以备不时之需。
(四)Python框架的农业信息共享平台在企业之间的运用
2018年,衡阳市新增各类新型农民合作社71家,各类新型农民合作社共计4217家。全市共有农产品产加销一体化服务企业2336家,农产品加工企业427家,实现农业产值330.36亿元。
Python框架的农业信息共享平台可以在企业之间建立一个交流的平台,通过企业之间的相互交流,促进企业之间相互学习。同时,由于有Python框架的农业信息共享平台,可以有效的避免企业之间的同品质农产品之间的恶性竞争,缓解企业之间的关系,形成一个良性循环的农业产业园。
[基金项目:湖南工学院大学生创新创业训练计划项目《基于Python框架的衡阳市农业信息共享平台研究》(CX2019066)。]
参考文献:
[1] 周快快.基于Web的长沙县农业信息共享平台研究[D].中南林业科技大学硕士论文,2019.
[2] 陈政,崔若男,周天予,刘会平,罗晓霞.河北省交通与农业现代化耦合协调性研究[J].经济地理,2020.40(3):152-159.
[3] 李乔宇,尚明华,王富军,等.基于Scrapy的农业网络数据爬取[J].山東农业科学,2018,50(1):142-147.
[4] 吴霏.分布式微信公众平台爬虫系统的研究与应用[D].南华大学硕士学位论文,2015.
(作者单位:1.三峡大学经济与管理学院 湖北宜昌 443002;2.湖南工学院计算机与信息科学院 湖南衡阳 421002;3.长沙卫生职业学院信息中心 湖南长沙 410000)
[作者简介:第一作者,谢树仁(1994—),男,湖南常宁人,三峡大学经济与管理学院研究生,研究方向:人力资源;第二作者,邓凯成(1998—)男,湖南永州人,软件工程专业,湖南工学院计算机与信息科学学院在读学士;通讯作者,喻琨(1980—),男,湖南长沙人,长沙卫生职业学院信息中心主任,实验师职称,主要从事教育信息化;通讯作者:邓凯成(1998—),男,湖南永州人,软件工程专业,湖南工学院计算机与信息科学学院在读学士;第四作者,陈政(1988—),男,湖南常宁人,信息工程专业,湖南工学院计算机与信息科学学院讲师、硕士,主要从事信息工程管理研究。]
(责编:若佳)