《利用Python访问MySQL数据库.doc》由会员分享,可在线阅读,更多相关《利用Python访问MySQL数据库.doc(9页珍藏版)》请在三一办公上搜索。
1、课程论文(python)论文题目: 利用Python访问MySQL数据库 学生姓名: 强锐 学 号: 201071050120 专 业: 网络与信息安全 班 级: 10级网络一班 指导老师: 程旺虎 利用Python访问MySQL数据库作者:强锐(西北师范大学 计算机科学与工程学院)摘 要: 本文讲解了应用Python如何访问MySQL数据库。首先介绍了Python、MySQL ,然后讲解MySQL数据库访问模块,并通过一个实例来说明应用该模块来访问MySQL数据库,最后总结了用Python访问MySQL 数据库的优点。关键词: Python; MySQL; Mysqldb; 数据库1 Pyt
2、hon1.1 概述Python 的创始人为Guido van Rossum,它是一种简单易学,功能强大的编程语言。它有高效率的高层数据结构,简单而有效地实现面向对象编程。Python 简洁的语法和对动态输入的支持,再加上解释性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别适用于快速的应用程序开发。1.2 特点(1) 简单,易学Python 是一种代表简单主义思想的语言。阅读一个良好的Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。 Python 极其容
3、易上手,其语法极其简单。(2) 免费、开源Python 是FLOSS (自由/开放源码软件) 之一。简单地说,用户可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS 是基于一个团体分享知识的概念。这是为什么Python 如此优秀的原因之一它是由一群希望看到一个更加优秀的 Python 的人创造并经常改进着的。(3) 可移植性由于它的开源本质,Python 已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果小心地避免使用依赖于系统的特性,那么所有Python 程序无需修改就可以在下述任何平台上面运行。这些平台包括Linux、Wind
4、ows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE 甚至还有PocketPC.(4) 解释性Python 语言写的程序不需要编译成二进制代码,可以直接从源代码运行程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于不再需要担心如何编译程序、如何确保连接转载正确的库等等,所有
5、这一切使得使用Python更加简单。由于只需要把Python 程序拷贝到另外一台计算机上,它就可以工作了,这也使得Python 程序更加易于移植。(5) 面向对象Python 既支持面向过程的编程也支持面向对象的编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C+和Java 相比,Python 以一种非常强大又简单的方式实现面向对象编程。(6) 可扩展性如果需要一段关键代码运行得更快或者希望某些算法不公开,可以把部分程序用C 或C+编写,然后在Python 程序中使用它们。(7) 可嵌入
6、性可以把Python 嵌入C/C+程序,从而向程序用户提供脚本功能。(8) 丰富的库Python 标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML -RPC、HTML、WAV 文件、密码系统、GUI (图形用户界面)、Tk 和其他与系统有关的操作。记住,只要安装了Python,所有这些功能都是可用的,这被称作Python 的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted 和Python 图像库等等。1.3 python中的异常异常是指程序中的例外,违例情
7、况。异常机制是指程序出现错误后,程序的处理方法。当出现错误后,程序的执行流程发生改变,程序的控制权转移到异常处理。Exception类是常用的异常类,该类包括StandardError,StopIteration, GeneratorExit, Warning等异常类。StandardError类是python中的错误异常,如果程序上出现逻辑错误, 将引发该异常。StandardError类是所有内敛异常的基类,放置在默认的命名空间中,因此使用IOEroor,EOFError, ImportError等类,不需要导入exception模块。StopIteration类判断循环是否执行到尾部,如
8、果循环到尾部,则抛出该异常。GeneratorExit类是由Generator函数引发的异常,当调用close()时引发该异常。Warning类表示程序中的代码引起的警告。python中的异常使用继承结构创建,可以在异常处理程序中捕获基类异常,也可以捕获各种子类异常,python中使用try.except语句捕获异常,异常子句定义在try子句后面。1.4 python其他语言的比较 一般的说法的这样的: Shell script 太旧了,无论如何不能用来写程式。 Perl 擅长做服务器的管理,因为它的字串处理功能特别强大,同时有全面的编程接口和操作系统相连。自己用没问题,就是不懂人家在写什么。
9、 PHP 擅长于网页,因为它可以嵌入在 HTML 文件中并支援各类资料库。但一离开网页就左支右绌。 Python 特别适合一般的需求,因为它语法简明,容易维护,有很多模组可用,而且容易做出图形介面。但它并不是 object oriented 并不纯,速度也较 Perl 慢一些。 Tcl/Tk 基本变数形态只有文字串,每次算术都是从文字变数字再变文字,鸣,没什么好提的了吧。 Java 太伟大了,我可不想每次开始写程式时都幻想要完成一个跨企业的解决方案,引入几十个标头档,写完了才明白原来我只需它读一个用户指定的文件,画两条直线就行了。唉,落差太大。 Ruby 太新了,要正式应用是将来的事。 1.5
10、 简单程序示例按照惯例,学习语言的第一个程序是hello,world。在Python 中编写一个hello,world 程序非常简单,如下:hello.py#! /usr/bin/env pythonprint Hello, world!执行python hello.py,即在屏幕打印Hello, world!2 MySQL2.1 MySQL概况MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL的SQL语
11、言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策(本词条“授权政策”),它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。 目前MySQL 被广泛地应用在Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL 作为网站数据库。2.2 MySQL系统特征下面来总结一下它的特点:(1) 使用C 和C+编写,并使用了多种编译器进
12、行测试,保证源代码的可移植性。(2) 支持AIX、FreeBSD、HP -UX、Linux、Mac OS、Novell Netware、OpenBSD、OS/2 Wrap、Solaris、Windows 等多种操作系统。(3) 为多种编程语言提供了API。这些编程语言包括C、C+、Eiffel、Java、Perl、PHP、Python、Ruby 和Tcl 等。(4) 支持多线程,充分利用CPU 资源。(5) 优化的SQL 查询算法,有效地提高查询速度。(6) 既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中提供多语言支持,常见的编码如中文的GB 2
13、312、BIG5,日文的Shift_JIS 等都可以用作数据表名和数据列名。(7) 提供TCP/IP、ODBC 和JDBC 等多种数据库连接途径,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列名。 (8)提供TCP/IP、ODBC和JDBC等多种数据库连接途径。(9)提供用于管理、检查、优化数据库操作的管理工具。(10)支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 (11)支持多种存储引擎2.3 基本命令 中的内容为可选项 -创建数据库 mysql create database 数据库名称 -创建表 mysql create ta
14、ble 表名 ( 列的名字(id)类型(int(4)primary key(定义主键) auto_increment(描述 自增), , ); -查看所有数据库 mysql show databases ; -使用某个数据库 mysql use 数据库名称; -查看所使用数据库下所有的表 mysql show tables; -显示表的属性结构 mysql desc 表名; -选择表中数据的显示 -* 代表选择所有列 , mysql select * from 表名 where id=?and name=? or name=?; mysql select id,name from 表名orde
15、r by 某一列的名称 desc(降序,asc为升序) -删除表中的数据 mysql delete from table where id=?or name=? (and name=?); -删除表 mysql drop table; -删除数据库 mysql drop database;3 MySQLdb从上面Python 和MySQL 的介绍可以看出,通过python 访问MySQL 数据库能充分发挥Python 和MySQL 数据库的优势。而要访问数据库,就必须有相应的数据接口API,MySQLdb就是这样一个开源的数据库访问API,并且是线程安全的。MySQLdb 库有几个重要的对象:
16、(1) Connection Objects连接对象是connect 函数返回的,该对象有如下几个关键方法:1) commit () 提交当前事务2) rollback () 回滚当前事务3) cursor () 获得一个游标对象。事实上MySQL 并不支持游标,但是可以通过API 来模拟。(2) Cursor Objects游标(Cursor) 是处理数据的一种方法,为了查看或者处理结果集中的数据,游标提供了在结果集中一次以行或者多行前进或向后浏览数据的能力。可以把游标当作一个指针,它可以指定结果中的任何位置,然后允许用户对指定位置的数据进行处理。游标包含两个部分:一个是游标结果集、一个是游
17、标位置。游标结果集:定义该游标得SELECT 语句返回的行的集合。游标位置:指向这个结果集某一行的当前指针。MySQLdb 中游标对象最重要的方法是execute 方法。execute (sql)下面通过实例来说明MySQLDB 访问MySQL,开发环境:Windowsxp + Python2.5 + MySQL5.1。3.1 安装步骤(1) 在www.python.org 下载python-2.5.4.msi 并安装。(2) 在 下载mysql-5.0.19-win32.zip 并安装。(3) 在sourceforge: MySQLdb,下载解压缩后放到%Python_HOME%Libsit
18、e-packages 目录中,python 会自动找到此包。3.2 简单使用import MySQLdb test=MySQLdb.connect(db=databasename,host=localhost,user=username,passwd=password) cur = test.cursor() cur.execute(CREATE TABLE users(login VARCHAR(8), uid INT) 0L 现在来插入几行数据到数据库, 然后再将它们取出来. cur.execute(INSERT INTO users VALUES(john, 7000) 1L cur.e
19、xecute(INSERT INTO users VALUES(jane, 7001) 1L cur.execute(INSERT INTO users VALUES(bob, 7200) 1L cur.execute(SELECT * FROM users WHERE login LIKE j%) 2L for data in cur.fetchall(): . print %st%s % data . john 7000 jane 7001 3.3 示例程序(1) 由于要访问数据库,首先启动mysql 数据库,命令:mysqld-nt standalone,然后用下面脚本创建一个数据库re
20、st:grant all privileges on *.* to restlocalhost identified byrest with grant option;grant all privileges on *.* to rest% identified by rest,with grant option;flush privileges;create database rest default character set utf8;use rest;(2) 编写python 源码access.py#-*- encoding: utf-8 -*-import os, sys, stri
21、ngimport MySQLdb # 导入MySQLdb 模块# 连接数据库try:conn = MySQLdb.connect (host= localhost,user=root,passwd=rainman,db=rest)except Exception, e:print esys.exit ()# 获取cursor 对象来进行操作cursor = conn.cursor ()# 创建表sql = create table if not exists test1 (name varchar (128)primary key, age int (4)cursor.execute (sql
22、)# 插入数据sql = insert into test1 (name, age) values (%s, %d)% ( zhaowei , 23)try:cursor.execute (sql)except Exception, e:print esql = insert into test1 (name, age) values (%s, %d)% ( 张三 , 21)try:cursor.execute (sql)except Exception, e:print e# 插入多条sql = insert into test1 (name, age) values (%s, %s)val
23、 = ( 李四 , 24) , ( 王五 , 25) , ( 洪六 , 26)try:cursor.executemany (sql, val)except Exception, e:print emit () ;# 查询出数据sql = select * from test1cursor.execute (sql)alldata = cursor.fetchall ()# 如果有数据返回,就循环输出, alldata 是有个二维的# 列表if alldata:for rec in alldata:print rec 0 , rec 1cursor.close ()conn.close ()(
24、3) 执行结果如下:Python access.py张三 21王五 25Zhaowei 23李四 24洪六 264 结语通过上文对Python语言的特性介绍和使用,我们可以看到,Python语言在许多方面都极具吸引力,其简洁清晰的语法功能,强大的内置类库,友好免费的开发工具,以及广泛的适用范围等优点,使Python语言不仅适合于初学者,也适合于专业人员和科学领域。在研究Python语言应用的过程中,笔者感受了Python语言的便利性和功能的强大,希望更多的人了解Python语言,也希望更多的人能将Python作为一般编程的首选语言。通过本实验,笔者得出以下的经验:(1) 最大的优点是充分利用P
25、ython 和MySQL 的优点,使得访问数据库变得简单。(2) 由于Python 和MySQL 的跨平台性,数据库访问模块可以实现0 成本跨平台。(3) MySQL,MySQLdb,Python 都是自由软件,可以免费下载,对于中小型企业用户特别合适。参考文献1Learning PythonM,Mark Lutz. 东南大学出版社,2005-62http:/www.python.org/OL,Python 语言的官方网站3http:/www.eecs.mit.edu/ug/newcurriculum/cpw_6.01.htmlOL,MIT 计算机科学系改用Python 语言作为计算机编程入门语言的FAQ4 1 Mark Lutz. Learning PythonM . 3 版. 南京:东南大学出版社,2008.5 美Wesley J Chun. Python 核心编程M . 2 版. 宋吉广,译. 北京:人民邮电出版社,2007.6 孙广磊. 征服Python 语言基础与典型应用M . 北京:人民邮电出版社,2007.7 NOEL RAPPIN. wxPython in Action M . Manning Publi2cations Co. ,2006.