首页
关于
友情链接
文章归档
Search
1
centos 32位 64位 下挂vagex一键包代码
718 阅读
2
wordpress转typecho方法
615 阅读
3
一个自制的virto精简版kvm qemu win2003模板 最低64M内存可用
605 阅读
4
PHP 安装
539 阅读
5
暴雨 车被泡了~
478 阅读
默认分类
vps综合利用
登录
/
注册
Search
标签搜索
Uncategorized
安装
mysql
utf-8
网站
google
linux
free
免费
黑色
ssl
一键包
优化
40%
press
vagex
32位
64位
debian
domain
御品VPS
累计撰写
501
篇文章
累计收到
1
条评论
首页
栏目
默认分类
vps综合利用
页面
关于
友情链接
文章归档
搜索到
11
篇与
linux
的结果
2018-03-25
PHP Zip File 函数
PHP XML 函数PHP 教程 PHP Zip File 函数PHP Zip File 简介Zip File 函数允许您读取压缩文件。安装如需在服务器上运行 Zip File 函数,必须安装这些库: Guido Draheim 的 ZZIPlib 库: 下载 ZZIPlib 库 Zip PELC 扩展:下载 Zip PELC 扩展 在 Linux 系统上安装PHP 5+:Zip 函数和 Zip 库默认不会启用,必须从上面的链接下载。请使用 --with-zip=DIR 配置选项来包含 Zip 支持。在 Windows 系统上安装PHP 5+:Zip 函数默认不会启用,必须从上面的链接下载 php_zip.dll 和 ZZIPlib 库。必须在 php.ini 中启用 php_zip.dll。如需启用任何 PHP 扩展,PHP extension_dir 设置(在 php.ini 文件中)应该设置为该 PHP 扩展所在的目录。举例 extension_dir 的值可能是 c:/php/ext。PHP Zip File 函数PHP:指示支持该函数的最早的 PHP 版本。 函数 描述 PHP zip_close() 关闭 ZIP 文件。 4 zip_entry_close() 关闭 ZIP 文件中的一个项目。 4 zip_entry_compressedsize() 返回 ZIP 文件中的一个项目的被压缩尺寸。 4 zip_entry_compressionmethod() 返回 ZIP 文件中的一个项目的压缩方法。 4 zip_entry_filesize() 返回 ZIP 文件中的一个项目的实际文件尺寸。 4 zip_entry_name() 返回 ZIP 文件中的一个项目的名称。 4 zip_entry_open() 打开 ZIP 文件中的一个项目以供读取。 4 zip_entry_read() 读取 ZIP 文件中的一个打开的项目。 4 zip_open() 打开 ZIP 文件。 4 zip_read() 读取 ZIP 文件中的下一个项目。 4 PHP Zip File 常量无。
2018年03月25日
190 阅读
0 评论
0 点赞
2018-03-25
PHP 图像处理
PHP MySQL 预处理语句php getimagesize 函数 – 获取图像信息 PHP 图像处理PHP 提供了丰富的图像处理函数,主要包括: 函数描述 gd_info() 取得当前安装的 GD 库的信息 getimagesize() 获取图像信息 getimagesizefromstring() 获取图像信息 image_type_to_extension() 获取图片后缀 image_type_to_mime_type() 返回图像的 MIME 类型 image2wbmp() 输出WBMP图片 imageaffine() 返回经过仿射变换后的图像 imageaffinematrixconcat() 连接两个矩阵 imageaffinematrixget() 获取矩阵 imagealphablending() 设定图像的混色模式 imageantialias() 是否使用抗锯齿(antialias)功能 imagearc() 画椭圆弧 imagechar() 写出横向字符 imagecharup() 垂直地画一个字符 imagecolorallocate() 为一幅图像分配颜色 imagecolorallocatealpha() 为一幅图像分配颜色和透明度 imagecolorat() 取得某像素的颜色索引值 imagecolorclosest() 取得与指定的颜色最接近的颜色的索引值 imagecolorclosestalpha() 取得与指定的颜色加透明度最接近的颜色的索引 imagecolorclosesthwb() 取得与指定的颜色最接近的色度的黑白色的索引 imagesx() 、imagesy() 获取图像宽度与高度 GD 库 使用 PHP 图像处理函数,需要加载 GD 支持库。请确定 php.ini 加载了 GD 库:Window 服务器上:extension = php_gd2.dll Linux 和 Mac 系统上: extension = php_gd2.so 使用 gd_info() 函数可以查看当前安装的 GD 库的信息:<?php var_dump(gd_info()); ?> 输出大致如下:array(12) { ["GD Version"]=> string(26) "bundled (2.1.0 compatible)" ["FreeType Support"]=> bool(true) ["FreeType Linkage"]=> string(13) "with freetype" ["T1Lib Support"]=> bool(false) ["GIF Read Support"]=> bool(true) ["GIF Create Support"]=> bool(true) ["JPEG Support"]=> bool(true) ["PNG Support"]=> bool(true) ["WBMP Support"]=> bool(true) ["XPM Support"]=> bool(false) ["XBM Support"]=> bool(true) ["JIS-mapped Japanese Font Support"]=> bool(false) }
2018年03月25日
171 阅读
0 评论
0 点赞
2018-03-24
Python3 解释器
Python3 教程Python3 注释 Python3 解释器Linux/Unix的系统上,一般默认的 python 版本为 2.x,我们可以将 python3.x 安装在 /usr/local/python3 目录中。安装完成后,我们可以将路径 /usr/local/python3/bin 添加到您的 Linux/Unix 操作系统的环境变量中,这样您就可以通过 shell 终端输入下面的命令来启动 Python3 。 $ PATH=$PATH:/usr/local/python3/bin/python3 # 设置环境变量 $ python3 --version Python 3.4.0 在Window系统下你可以通过以下命令来设置Python的环境变量,假设你的Python安装在 C:/Python34 下: set path=%path%;C:/python34 交互式编程我们可以在命令提示符中输入"Python"命令来启动Python解释器: $ python3 执行以上命令后,出现如下窗口信息: $ python3 Python 3.4.0 (default, Apr 11 2014, 13:05:11) [GCC 4.8.2] on linux Type "help", "copyright", "credits" or "license" for more information. >>> 在 python 提示符中输入以下语句,然后按回车键查看运行效果: print ("Hello, Python!"); 以上命令执行结果如下: Hello, Python! 当键入一个多行结构时,续行是必须的。我们可以看下如下 if 语句: >>> flag = True >>> if flag : ... print("flag 条件为 True!") ... flag 条件为 True! 脚本式编程将如下代码拷贝至 hello.py文件中: print ("Hello, Python!"); 通过以下命令执行该脚本: python3 hello.py 输出结果为: Hello, Python! 在Linux/Unix系统中,你可以在脚本顶部添加以下命令让Python脚本可以像SHELL脚本一样可直接执行: set path=%path%;C:/python34 0然后修改脚本权限,使其有执行权限,命令如下: set path=%path%;C:/python34 1执行以下命令: set path=%path%;C:/python34 2输出结果为: set path=%path%;C:/python34 3
2018年03月24日
145 阅读
0 评论
0 点赞
2018-03-23
Python3 模块
Python3 数据结构Python3 输入和输出 Python3 模块在前面的几个章节中我们脚本上是用 python 解释器来编程,如果你从 Python 解释器退出再进入,那么你定义的所有的方法和变量就都消失了。为此 Python 提供了一个办法,把这些定义存放在文件中,为一些脚本或者交互式的解释器实例使用,这个文件被称为模块。模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py。模块可以被别的程序引入,以使用该模块中的函数等功能。这也是使用 python 标准库的方法。下面是一个使用 python 标准库中模块的例子。 #!/usr/bin/python3 # 文件名: using_sys.py import sys print('命令行参数如下:') for i in sys.argv: print(i) print('/n/nPython 路径为:', sys.path, '/n') 执行结果如下所示: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 1、import sys 引入 python 标准库中的 sys.py 模块;这是引入某一模块的方法。2、sys.argv 是一个包含命令行参数的列表。3、sys.path 包含了一个 Python 解释器自动查找所需模块的路径的列表。 import 语句想使用 Python 源文件,只需在另一个源文件里执行 import 语句,语法如下: import module1[, module2[,... moduleN] 当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support,需要把命令放在脚本的顶端:support.py 文件代码为: #!/usr/bin/python3 # Filename: support.py def print_func( par ): print ("Hello : ", par) return test.py 引入 support 模块: #!/usr/bin/python3 # Filename: test.py # 导入模块 import support # 现在可以调用模块里包含的函数了 support.print_func("Runoob") 以上实例输出结果: $ python3 test.py Hello : Runoob 一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。当我们使用import语句的时候,Python解释器是怎样找到对应的文件的呢?这就涉及到Python的搜索路径,搜索路径是由一系列目录名组成的,Python解释器就依次从这些目录中去寻找所引入的模块。这看起来很像环境变量,事实上,也可以通过定义环境变量的方式来确定搜索路径。搜索路径是在Python编译或安装的时候确定的,安装新的库应该也会修改。搜索路径被存储在sys模块中的path变量,做一个简单的实验,在交互式解释器中,输入以下代码: >>> import sys >>> sys.path ['', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] >>> sys.path 输出是一个列表,其中第一项是空串'',代表当前目录(若是从一个脚本中打印出来的话,可以更清楚地看出是哪个目录),亦即我们执行python解释器的目录(对于脚本的话就是运行的脚本所在的目录)。因此若像我一样在当前目录下存在与要引入模块同名的文件,就会把要引入的模块屏蔽掉。了解了搜索路径的概念,就可以在脚本中修改sys.path来引入一些不在搜索路径中的模块。现在,在解释器的当前目录或者 sys.path 中的一个目录里面来创建一个fibo.py的文件,代码如下: # 斐波那契(fibonacci)数列模块 def fib(n): # 定义到 n 的斐波那契数列 a, b = 0, 1 while b < n: print(b, end=' ') a, b = b, a+b print() def fib2(n): # 返回到 n 的斐波那契数列 result = [] a, b = 0, 1 while b < n: result.append(b) a, b = b, a+b return result 然后进入Python解释器,使用下面的命令导入这个模块: >>> import fibo 这样做并没有把直接定义在fibo中的函数名称写入到当前符号表里,只是把模块fibo的名字写到了那里。可以使用模块名称来访问函数: >>> fibo.fib(1000) 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 >>> fibo.fib2(100) [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>> fibo.__name__ 'fibo' 如果你打算经常使用一个函数,你可以把它赋给一个本地的名称: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 0from…import 语句Python的from语句让你从模块中导入一个指定的部分到当前命名空间中,语法如下: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 1例如,要导入模块 fibo 的 fib 函数,使用如下语句: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 2这个声明不会把整个fibo模块导入到当前的命名空间中,它只会将fibo里的fib函数引入进来。From…import* 语句把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 3这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。深入模块模块除了方法定义,还可以包括可执行的代码。这些代码一般用来初始化这个模块。这些代码只有在第一次被导入时才会被执行。每个模块有各自独立的符号表,在模块内部为所有的函数当作全局符号表来使用。所以,模块的作者可以放心大胆的在模块内部使用这些全局变量,而不用担心把其他用户的全局变量搞花。从另一个方面,当你确实知道你在做什么的话,你也可以通过 modname.itemname 这样的表示法来访问模块内的函数。模块是可以导入其他模块的。在一个模块(或者脚本,或者其他地方)的最前面使用 import 来导入一个模块,当然这只是一个惯例,而不是强制的。被导入的模块的名称将被放入当前操作的模块的 符号表中。还有一种导入的方法,可以使用 import 直接把模块内(函数,变量的)名称导入到当前操作模块。比如: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 4这种导入的方法不会把被导入的模块的名称放在当前的字符表中(所以在这个例子里面,fibo 这个名称是没有定义的)。这还有一种方法,可以一次性的把模块中的所有(函数,变量)名称都导入到当前模块的字符表: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 5这将把所有的名字都导入进来,但是那些由单一下划线(_)开头的名字不在此例。大多数情况, Python程序员不使用这种方法,因为引入的其它来源的命名,很可能覆盖了已有的定义。__name__属性一个模块被另一个程序第一次引入时,其主程序将运行。如果我们想在模块被引入时,模块中的某一程序块不执行,我们可以用__name__属性来使该程序块仅在该模块自身运行时执行。 $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 6运行输出如下: $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 7 $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 8说明: 每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入。dir() 函数 $ python using_sys.py 参数1 参数2 命令行参数如下: using_sys.py 参数1 参数2 Python 路径为: ['/root', '/usr/lib/python3.4', '/usr/lib/python3.4/plat-x86_64-linux-gnu', '/usr/lib/python3.4/lib-dynload', '/usr/local/lib/python3.4/dist-packages', '/usr/lib/python3/dist-packages'] 9如果没有给定参数,那么 dir() 函数会罗列出当前定义的所有名称: import module1[, module2[,... moduleN] 0 标准模块Python 本身带着一些标准的模块库,在 Python 库参考文档中将会介绍到(就是后面的"库参考文档")。有些模块直接被构建在解析器里,这些虽然不是一些语言内置的功能,但是他却能很高效的使用,甚至是系统级调用也没问题。这些组件会根据不同的操作系统进行不同形式的配置,比如 winreg 这个模块就只会提供给 Windows 系统。应该注意到这有一个特别的模块 sys ,它内置在每一个 Python 解析器中。变量 sys.ps1 和 sys.ps2 定义了主提示符和副提示符所对应的字符串: import module1[, module2[,... moduleN] 1 包包是一种管理 Python 模块命名空间的形式,采用"点模块名称"。比如一个模块的名称是 A.B, 那么他表示一个包 A中的子模块 B 。就好像使用模块的时候,你不用担心不同模块之间的全局变量相互影响一样,采用点模块名称这种形式也不用担心不同库之间的模块重名的情况。这样不同的作者都可以提供 NumPy 模块,或者是 Python 图形库。不妨假设你想设计一套统一处理声音文件和数据的模块(或者称之为一个"包")。现存很多种不同的音频文件格式(基本上都是通过后缀名区分的,例如: .wav,:file:.aiff,:file:.au,),所以你需要有一组不断增加的模块,用来在不同的格式之间转换。并且针对这些音频数据,还有很多不同的操作(比如混音,添加回声,增加均衡器功能,创建人造立体声效果),所以你还需要一组怎么也写不完的模块来处理这些操作。这里给出了一种可能的包结构(在分层的文件系统中): import module1[, module2[,... moduleN] 2在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。目录只有包含一个叫做 __init__.py 的文件才会被认作是一个包,主要是为了避免一些滥俗的名字(比如叫做 string)不小心的影响搜索路径中的有效模块。最简单的情况,放一个空的 :file:__init__.py就可以了。当然这个文件中也可以包含一些初始化代码或者为(将在后面介绍的) __all__变量赋值。用户可以每次只导入一个包里面的特定模块,比如: import module1[, module2[,... moduleN] 3这将会导入子模块:sound.effects.echo。 他必须使用全名去访问: import module1[, module2[,... moduleN] 4还有一种导入子模块的方法是: import module1[, module2[,... moduleN] 5这同样会导入子模块: echo,并且他不需要那些冗长的前缀,所以他可以这样使用: import module1[, module2[,... moduleN] 6还有一种变化就是直接导入一个函数或者变量: import module1[, module2[,... moduleN] 7 同样的,这种方法会导入子模块: echo,并且可以直接使用他的 echofilter() 函数: echofilter(input, output, delay=0.7, atten=4) 注意当使用from package import item这种形式的时候,对应的item既可以是包里面的子模块(子包),或者包里面定义的其他名称,比如函数,类或者变量。import语法会首先把item当作一个包定义的名称,如果没找到,再试图按照一个模块去导入。如果还没找到,恭喜,一个:exc:ImportError 异常被抛出了。反之,如果使用形如import item.subitem.subsubitem这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字。从一个包中导入*设想一下,如果我们使用 from sound.effects import *会发生什么?Python 会进入文件系统,找到这个包里面所有的子模块,一个一个的把它们都导入进来。但是很不幸,这个方法在 Windows平台上工作的就不是非常好,因为Windows是一个大小写不区分的系统。在这类平台上,没有人敢担保一个叫做 ECHO.py 的文件导入为模块 echo 还是 Echo 甚至 ECHO。(例如,Windows 95就很讨厌的把每一个文件的首字母大写显示)而且 DOS 的 8+3 命名规则对长模块名称的处理会把问题搞得更纠结。为了解决这个问题,只能烦劳包作者提供一个精确的包的索引了。导入语句遵循如下规则:如果包定义文件 __init__.py 存在一个叫做 __all__ 的列表变量,那么在使用 from package import * 的时候就把这个列表中的所有名字作为包内容导入。作为包 的作者,可别忘了在更新包之后保证 __all__ 也更新了啊。你说我就不这么做,我就不使用导入*这种用法,好吧,没问题,谁让你是老板呢。这里有一个例子,在:file:sounds/effects/__init__.py中包含如下代码: import module1[, module2[,... moduleN] 8这表示当你使用from sound.effects import *这种用法时,你只会导入包里面这三个子模块。如果 __all__ 真的没有定义,那么使用from sound.effects import *这种语法的时候,就不会导入包 sound.effects 里的任何子模块。他只是把包sound.effects和它里面定义的所有内容导入进来(可能运行__init__.py里定义的初始化代码)。这会把 __init__.py 里面定义的所有名字导入进来。并且他不会破坏掉我们在这句话之前导入的所有明确指定的模块。看下这部分代码: import module1[, module2[,... moduleN] 9这个例子中,在执行from...import前,包sound.effects中的echo和surround模块都被导入到当前的命名空间中了。(当然如果定义了__all__就更没问题了)通常我们并不主张使用*这种方法来导入模块,因为这种方法经常会导致代码的可读性降低。不过这样倒的确是可以省去不少敲键的功夫,而且一些模块都设计成了只能通过特定的方法导入。记住,使用from Package import specific_submodule这种方法永远不会有错。事实上,这也是推荐的方法。除非是你要导入的子模块有可能和其他包的子模块重名。如果在结构中包是一个子包(比如这个例子中对于包sound来说),而你又想导入兄弟包(同级别的包)你就得使用导入绝对的路径来导入。比如,如果模块sound.filters.vocoder 要使用包sound.effects中的模块echo,你就要写成 from sound.effects import echo。 #!/usr/bin/python3 # Filename: support.py def print_func( par ): print ("Hello : ", par) return 0无论是隐式的还是显式的相对导入都是从当前模块开始的。主模块的名字永远是"__main__",一个Python应用程序的主模块,应当总是使用绝对路径引用。包还提供一个额外的属性__path__。这是一个目录列表,里面每一个包含的目录都有为这个包服务的__init__.py,你得在其他__init__.py被执行前定义哦。可以修改这个变量,用来影响包含在包里面的模块和子包。这个功能并不常用,一般用来扩展包里面的模块。
2018年03月23日
137 阅读
0 评论
0 点赞
2018-03-23
Python3 MySQL 数据库连接
Python3 CGI编程Python3 网络编程 Python3 MySQL 数据库连接本文我们为大家介绍 Python3 使用 PyMySQL 连接数据库,并实现简单的增删改查。什么是 PyMySQL?PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。PyMySQL 遵循 Python 数据库 API v2.0 规范,并包含了 pure-Python MySQL 客户端库。PyMySQL 安装在使用 PyMySQL 之前,我们需要确保 PyMySQL 已安装。PyMySQL 下载地址:https://github.com/PyMySQL/PyMySQL。如果还未安装,我们可以使用以下命令安装最新版的 PyMySQL: $ pip install PyMySQL 如果你的系统不支持 pip 命令,可以使用以下方式安装:1、使用 git 命令下载安装包安装(你也可以手动下载): $ git clone https://github.com/PyMySQL/PyMySQL $ cd PyMySQL/ $ python3 setup.py install 2、如果需要制定版本号,可以使用 curl 命令来安装: $ # X.X 为 PyMySQL 的版本号 $ curl -L https://github.com/PyMySQL/PyMySQL/tarball/pymysql-X.X | tar xz $ cd PyMySQL* $ python3 setup.py install $ # 现在你可以删除 PyMySQL* 目录 注意:请确保您有root权限来安装上述模块。安装的过程中可能会出现"ImportError: No module named setuptools"的错误提示,意思是你没有安装setuptools,你可以访问https://pypi.python.org/pypi/setuptools 找到各个系统的安装方法。Linux 系统安装实例: $ wget https://bootstrap.pypa.io/ez_setup.py $ python3 ez_setup.py 数据库连接连接数据库前,请先确认以下事项: 您已经创建了数据库 TESTDB. 在TESTDB数据库中您已经创建了表 EMPLOYEE EMPLOYEE表字段为 FIRST_NAME, LAST_NAME, AGE, SEX 和 INCOME。 连接数据库TESTDB使用的用户名为 "testuser" ,密码为 "test123",你可以可以自己设定或者直接使用root用户名及其密码,Mysql数据库用户授权请使用Grant命令。 在你的机子上已经安装了 Python MySQLdb 模块。 如果您对sql语句不熟悉,可以访问我们的 SQL基础教程 实例:以下实例链接 Mysql 的 TESTDB 数据库:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")# 使用 cursor() 方法创建一个游标对象 cursorcursor=db.cursor()# 使用 execute() 方法执行 SQL 查询cursor.execute("SELECT VERSION()")# 使用 fetchone() 方法获取单条数据.data=cursor.fetchone()print("Database version : %s"%data)# 关闭数据库连接db.close()执行以上脚本输出结果如下: Database version : 5.5.20-log 创建数据库表如果数据库连接存在我们可以使用execute()方法来为数据库创建表,如下所示创建表EMPLOYEE:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")# 使用 cursor() 方法创建一个游标对象 cursorcursor=db.cursor()# 使用 execute() 方法执行 SQL,如果表存在则删除cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")# 使用预处理语句创建表sql="""CREATE TABLE EMPLOYEE ( FIRST_NAME CHAR(20) NOT NULL, LAST_NAME CHAR(20), AGE INT, SEX CHAR(1), INCOME FLOAT )"""cursor.execute(sql)# 关闭数据库连接db.close()数据库插入操作以下实例使用执行 SQL INSERT 语句向表 EMPLOYEE 插入记录:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")# 使用cursor()方法获取操作游标cursor=db.cursor()# SQL 插入语句sql="""INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""try:# 执行sql语句cursor.execute(sql)# 提交到数据库执行db.commit()except:# 如果发生错误则回滚db.rollback()# 关闭数据库连接db.close()以上例子也可以写成如下形式:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")# 使用cursor()方法获取操作游标cursor=db.cursor()# SQL 插入语句sql="INSERT INTO EMPLOYEE(FIRST_NAME, / LAST_NAME, AGE, SEX, INCOME) / VALUES ('%s', '%s', '%d', '%c', '%d' )"% /('Mac','Mohan',20,'M',2000)try:# 执行sql语句cursor.execute(sql)# 执行sql语句db.commit()except:# 发生错误时回滚db.rollback()# 关闭数据库连接db.close()以下代码使用变量向SQL语句中传递参数: .................................. user_id = "test123" password = "password" con.execute('insert into Login values("%s", "%s")' % / (user_id, password)) .................................. 数据库查询操作Python查询Mysql使用 fetchone() 方法获取单条数据, 使用fetchall() 方法获取多条数据。 fetchone(): 该方法获取下一个查询结果集。结果集是一个对象 fetchall():接收全部的返回结果行. rowcount: 这是一个只读属性,并返回执行execute()方法后影响的行数。 实例:查询EMPLOYEE表中salary(工资)字段大于1000的所有数据:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")# 使用cursor()方法获取操作游标cursor=db.cursor()# SQL 查询语句sql="SELECT * FROM EMPLOYEE / WHERE INCOME > '%d'"%(1000)try:# 执行SQL语句cursor.execute(sql)# 获取所有记录列表results=cursor.fetchall()forrowinresults:fname=row[0]lname=row[1]age=row[2]sex=row[3]income=row[4]# 打印结果print("fname=%s,lname=%s,age=%d,sex=%s,income=%d"% /(fname,lname,age,sex,income))except:print("Error: unable to fetch data")# 关闭数据库连接db.close()以上脚本执行结果如下: fname=Mac, lname=Mohan, age=20, sex=M, income=2000 数据库更新操作更新操作用于更新数据表的的数据,以下实例将 TESTDB表中的 SEX 字段全部修改为 'M',AGE 字段递增1:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db=pymysql.connect("localhost","testuser","test123","TESTDB")# 使用cursor()方法获取操作游标cursor=db.cursor()# SQL 更新语句sql="UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'"%('M')try:# 执行SQL语句cursor.execute(sql)# 提交到数据库执行db.commit()except:# 发生错误时回滚db.rollback()# 关闭数据库连接db.close()删除操作删除操作用于删除数据表中的数据,以下实例演示了删除数据表 EMPLOYEE 中 AGE 大于 20 的所有数据:实例(Python 3.0+)#!/usr/bin/python3importpymysql# 打开数据库连接db = pymysql.connect("localhost","testuser","test123","TESTDB")# 使用cursor()方法获取操作游标cursor=db.cursor()# SQL 删除语句sql="DELETE FROM EMPLOYEE WHERE AGE > '%d'"%(20)try:# 执行SQL语句cursor.execute(sql)# 提交修改db.commit()except:# 发生错误时回滚db.rollback()# 关闭连接db.close()执行事务事务机制可以确保数据一致性。事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的诸操作要么都做,要么都不做。一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。持久性(durability)。持续性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。Python DB API 2.0 的事务提供了两个方法 commit 或 rollback。实例实例(Python 3.0+)# SQL删除记录语句sql="DELETE FROM EMPLOYEE WHERE AGE > '%d'"%(20)try:# 执行SQL语句cursor.execute(sql)# 向数据库提交db.commit()except:# 发生错误时回滚db.rollback()对于支持事务的数据库, 在Python数据库编程中,当游标建立之时,就自动开始了一个隐形的数据库事务。commit()方法游标的所有更新操作,rollback()方法回滚当前游标的所有操作。每一个方法都开始了一个新的事务。错误处理DB API中定义了一些数据库操作的错误及异常,下表列出了这些错误和异常: 异常描述 Warning当有严重警告时触发,例如插入数据是被截断等等。必须是 StandardError 的子类。 Error警告以外所有其他错误类。必须是 StandardError 的子类。 InterfaceError当有数据库接口模块本身的错误(而不是数据库的错误)发生时触发。 必须是Error的子类。 DatabaseError和数据库有关的错误发生时触发。 必须是Error的子类。 DataError当有数据处理时的错误发生时触发,例如:除零错误,数据超范围等等。 必须是DatabaseError的子类。 OperationalError指非用户控制的,而是操作数据库时发生的错误。例如:连接意外断开、 数据库名未找到、事务处理失败、内存分配错误等等操作数据库是发生的错误。 必须是DatabaseError的子类。 IntegrityError完整性相关的错误,例如外键检查失败等。必须是DatabaseError子类。 InternalError数据库的内部错误,例如游标(cursor)失效了、事务同步失败等等。 必须是DatabaseError子类。 ProgrammingError程序错误,例如数据表(table)没找到或已存在、SQL语句语法错误、 参数数量错误等等。必须是DatabaseError的子类。 NotSupportedError不支持错误,指使用了数据库不支持的函数或API等。例如在连接对象上 使用.rollback()函数,然而数据库并不支持事务或者事务已关闭。 必须是DatabaseError的子类。
2018年03月23日
166 阅读
0 评论
0 点赞
1
2
3