数据库技术及应用第10章 Python数据库应用系统开发技术_第1页
数据库技术及应用第10章 Python数据库应用系统开发技术_第2页
数据库技术及应用第10章 Python数据库应用系统开发技术_第3页
数据库技术及应用第10章 Python数据库应用系统开发技术_第4页
数据库技术及应用第10章 Python数据库应用系统开发技术_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

10.1.1Python语言概述

1.Python语言的诞生和发展Python语言诞生于1990年,它由GuidovanRossum设计并领导开发,是解释型语言ABC的一种继承。2000年10月,Python2.0正式发布,2010年7月,Python2.x系列的最后一个版本2.7发布,该版本已于2020年1月1日终止支持。2008年12月,Python3.0正式发布,2019年10月,3.8版发布,并预计2020年10月将正式发布3.9版。Python被TIOBE评为2010、2018年度语言,2018年9月超越C++居排行榜第3名(前2名为C和Java)。2.Python语言的特点

(1)简洁易读(2)可移值性好(3)可扩展性强

(4)支持面向对象(5)通用灵活(6)开源和丰富的类库

10.1.2开发环境搭建1.安装Python解释器

官网(/downloads)上下载,目前以3.6或3.7版为好,3.8版还处于bugfix阶段(20年8月)。2.Python程序运行方式

(1)交互式运行方式

(2)文件式(批量式)运行方式

IDLE是Python自带的集成开发环境,功能更强大的Python语言集成开发环境是PyCharm。当然还有其他的开发环境。3.安装PyCharmPyCharm的安装包可以从它的官网https://www.jetbrains.com/pycharm上下载。PyCharm有收费的专业版(ProfessionalEdition)和免费的社区版(CommunityEdition)两个版本。

10.2.1第三方库概述Python语言有标准库和第三方库两类库,标准库随Python安装包一起发布,用户可以随时使用;第三方库由全球开发者分布式维护,需要安装后才能使用。第三方程序包括库(library)、模块(module)、类(class)和包(package)等多种命名,这里不对这些命名进行区分,统一将这些可重用代码称为“库”。第三方库并非都采用Python语言编写,很多采用C、C++等语言编写的专业库可以通过简单的接口封装供Python语言程序调用,这样的黏性功能使得Python语言被称为“胶水语言”。Python的官网(/pypi)上提供了第三方库索引功能(PythonPackageIndex,PyPI)。

10.2.2安装第三方库pip工具安装、自定义安装和文件安装三种安装方法。1.pip工具安装

pip是Python官方提供并维护的第三方库在线安装工具。pip是Python内置命令,只能在Windows命令提示符窗口中执行,执行pip–h命令将列出pip常用的子命令。

例10.1

安装将Python程序(.py文件)打包成可执行文件的第三方库PyInstaller。

pipinstallpyinstaller

例10.2

查看已安装的PyInstaller库的相关信息。

pipshowpyinstaller

例10.3

列出系统中已经安装的第三方库清单。

piplist

10.2.2安装第三方库1.pip工具安装例10.4

下载Python专用数据库访问第三方库pymssql。

pipdownloadpymssql

本例仅仅下载pymssql的安装文件(下载哪一个文件与执行本命令的日期有关),并不真正安装它。例10.5

使用清华大学的镜像源安装基于Qt的专业级GUI第三方库PyQt5。

pipinstallpyqt5-i/simple2.自定义安装

pip是安装Python第三方库的最主要方式,有一些第三方库暂时不能用pip安装。

自定义安装是指按照第三方库提供的步骤和方式安装,一般适用于pip中尚未登记或安装失败的第三方库。

10.2.2安装第三方库3.文件安装美国加州大学尔湾分校提供了一个可帮助用户获得Windows平台下第三方库文件的网站(/~gohlke/pythonlibs)。该网站列出了一批在pip安装中可能出现问题的第三方库,用户可根据Python语言的版本和Windows的版本选择对于的.whl文件下载。例10.6

安装例10.4中下载的第三方库pymssql,假定安装文件在D:\Python文件夹中。

pipinstalld:\python\pymssql-2.1.4-cp36-cp36m-win_amd64.whl如果需要在没有网络的环境下安装第三方库,可以采用文件安装方法。如果已经安装了PyCharm集成开发环境,则也可以在PyCharm中安装第三方库。

10.2.3导入第三方库使用import导入库有以下3种方法。1)import<库名>[as<别名>]

这种方法导入第三方库后,可以使用该库中的所有函数,调用库中函数的格式为:

<库名>.<函数名>([<函数参数>])2)from<库名>import{*|<函数名>[,…n]}

这种方法导入第三方库后,可以使用该库中的所有函数或者所列出的函数,使用时不再需要库名,调用库中函数的格式为:

<函数名>([<函数参数>])3)from<库名>import<函数名>as<别名>

如果要导入的函数的名称可能与程序中现有的名称冲突,或者函数的名称太长,可用as指定简短而独一无二的别名,这样在程序中就可以用别名来代替函数名调用函数了。

10.3.1connect函数

在Python程序中访问数据库是通过Python的DB-API进行的,DB-API为不同的关系数据库提供了一致性的接口,使得不同数据库间的代码移植变得更为简单。为SQLServer、MySQL、MongoDB提供DB-API接口的第三方库分别是pymssql、PyMySQL、pymongo。

调用connect函数的常用格式为:

pymssql.connect(server,user,password,database)

连接成功,则返回连接对象(ConnectionObject)主机名,本地可以使用“”(在不联网的状态下也可使用,但是“.”只能在联网状态下使用)为了能够成功连接SQLServer服务器,该服务器版本应当是Developer版或Enterprise版,而不能是Express版在调用connect函数之前,应当首先在SQLServer配置管理器中启用TCP/IP协议,并确认其TCP端口号为1433。

10.3.2Connection对象Connection对象没有数据属性,但定义了5个方法。(1)cursor()方法用于创建一个游标对象(CursorObject)。(2)commit()方法提交当前事务。如果数据库不支持事务,或者创建的连接对象启用了自动提交功能,则不能使用该方法。(3)rollback()方法回滚当前事务。(4)autocommit(status)方法将根据参数status的值(True或False)启用或者关闭自动提交功能。默认处于关闭状态。(5)close()方法用于关闭当前连接。

10.3.3Cursor对象

Cursor对象有4个数据属性(1)connection是创建此游标的连接对象。(2)lastrowid是最近一次所插入行的ID值。(3)rowcount是最近一次操作所影响的行数。(4)rownumber是当前结果集中游标的索引(从0开始)。定义了11个方法,主要有以下6个(1)execute(operation[,params])方法:operation指定SQL语句,params为占位符。(2)executemany(operation,params_seq)方法:重复执行params_seq(常常是列表类型)中的每一个元素。(3)fetchone()方法:获取查询结果集中的下一行。(4)fetchmany(size=None)方法:获取查询结果集中的下size行,并返回一个由元组组成的列表。(5)fetchall()方法:获取查询结果集中余下的所有行。(6)close()方法:关闭当前游标。

10.3.4Python访问数据库的主要步骤使用pymssql访问SQLServer数据库的步骤如下:(1)用connect函数创建数据库连接,返回连接对象conn;(2)用连接对象conn的cursor方法创建游标,返回游标对象cur;(3)用游标对象cur的execute、executemany、fetchone、fetchmany、fetchall等方法操作数据库;(4)用连接对象conn的commit方法提交(3)中所做的操作(如果(3)中做的仅仅是查询操作,或者连接对象的自动提交功能处于开启状态,可以省略本步);(5)用连接对象conn的close方法关闭连接。例10.7

使用pymssql访问SQLServer数据库示例。程序见教材

10.4.1GUI编程概述1.GUI库介绍(1)Tkinter内置在Python的安装包中,是绑定了Python的TkGUI工具集。Tkinter是轻量级跨平台的,且足够易用,但它提供的控件有限。(2)wxPython是跨平台的GUI工具集wxWidgets(用C++编写)的Python封装,是一套优秀的GUI图形库。(3)PyGTK是GUI库GTK的Python封装库,但在Windows平台上似乎表现不太好。(4)PyQt是基于专业级跨平台GUI工具集Qt(用C++编写)的Python封装库,每一个PyQt控件都有其对应的Qt控件。PyQt有620多个类和约6000个函数或者方法,其功能非常强大。用PyQt开发的界面效果与用Qt开发的界面效果相同,其跨平台的支持性很好。下面所讲的PyQt5就是Qtv5的Python封装库。

10.4.1GUI编程概述2.窗口和控件在GUI编程中,窗口包含组成GUI的各种图形化元素(如文本框、单选框、命令按钮等),这些元素称为控件或组件(Widget)。控件可以独立存在,也可以作为容器存在。使用容器控件的目的是将容器控件中的控件归为一类,以有别于其他控件。在PyQt5中,QMainWindow、QWidget和QDialog三个类都可以用来创建窗口,可以直接使用,也可以继承后再使用。(1)QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也可以说是GUI程序的主窗口。(2)QDialog是对话框窗口的基类。它可以是模态的,也可以是非模态的。QDialog窗口没有菜单栏、工具栏、状态栏等。(3)有可能作为顶层窗口,也有可能嵌入到其他窗口中,那么就使用QWidget类。

10.4.1GUI编程概述3.布局管理布局管理一般可以通过GUI制作工具或者纯代码编写两种方式来完成。在前面介绍的4种GUI库中,只有PyQt有一个称为Qt设计师(QtDesigner)的可视化GUI设计工具。PyQt5使用统一的坐标系统来定位控件的位置和大小。屏幕的左上角为坐标系统的原点,屏幕的坐标系统是用来定位顶层窗口的。而在窗口内部也有自己的坐标系统,窗口的坐标系统是用来定位控件的。对使用PyQt5所开发的界面用纯代码进行布局管理主要有两种方法,即绝对位置布局和布局类布局。绝对位置布局就是通过用setGeometry(x,y,width,height)方法来实现的。

10.4.1GUI编程概述3.布局管理绝对位置布局有如下几个缺点:(1)如果改变一个窗口的大小,窗口中控件的大小和位置不会随之改变;(2)所生成的窗口在不同的平台下看起来可能不一样;(3)在程序中改变字体时可能会破坏布局;(4)如果修改布局,如新增一个控件,就必须全部重新布局,既烦琐又费时。在PyQt5中用布局类布局有4种布局方式,4种布局方式对应4个布局类。(1)水平布局类(QHBoxLayout)可把所添加的控件在水平方向上依次排列;(2)垂直布局类(QVBoxLayout)可把所添加的控件在垂直方向上依次排列;(3)网格布局类(QGridLayout)可把所添加的控件以网格的形式排列;(4)表单布局类(QFormLayout)可把所添加的控件以两列的形式排列。在窗口中进行单一的布局并不难,但若要进行比较复杂的布局,如布局的嵌套,推荐使用QtDesigner可视化管理工具来进行界面布局。

10.4.1GUI编程概述4.事件驱动处理在Qt编程中,采用“信号-槽”机制来实现事件驱动处理,简单地说,信号(Signal)就是事件,槽(Slot)就是事件的处理程序。在创建事件循环之后,当信号发射时,连接的槽函数将会自动执行。在PyQt5中,信号和槽通过sender.signal.connect(receiver.slot)连接,其中sender是发送信号的对象,signal是信号名称,receiver是接受信号的对象,slot是信号绑定的方法(即槽函数)。所有从QObject类或其子类(如QWidget)派生出的类都能够包含信号和槽。信号与槽是多对多的关系,一个信号甚至还可以触发其他信号。在PyQt5编程时,用户可以使用预先定义好的信号(内置信号)和槽函数(内置槽函数),也可以自定义信号和槽函数。

10.4.2PyQt5中应用程序的创建PyQt5库中QtWidgets模块是PyQt5界面设计中最常用的模块,它包含了一系列UI元素,用于创建典型的桌面风格用户界面。其他的模块还有49个(5.11.1版本)。使用PyQt5库创建一个GUI程序的基本步骤如下:

(1)导入PyQt5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论