logo资料库

Python 数据库编程入门教程.pdf

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
Python 数据库编程入门教程 本文首发自新浪博客“派派技术小组”,转载请注明出处 这年头,还拿打印一行"Hello World"做教程?毛主席说了,你这不是耍流氓么!这个时代, 数据库是王道!今天,我就用一个简单实用的销售数据库开发案例来引导感兴趣的读者入门 Python 数据库编程技术。我们将使用 Python 创建一个简单的 Access 销售数据库,使用 ODBC 功能对数据库插入删除销售记录,最后对数据库中的数据进行查询。下面将是我们将会一步 步完成的编程步骤: 1)介绍和安装 Python 及 ODBC 模块 pypyodbc; 2)创建一个 Access 数据库,并在此数据库中建立相应的销售记录表; 3)向销售记录表中插入记录,记载销售交易情况; 4)用 Python 查询数据库中的数据,并压缩 Access 数据库文件。 咱们这就开始! pypyodbc Python 1111)安装 Python Python pypyodbc Python 和 pypyodbc pypyodbc 模块 Python 可以在 www.python.org 中下载。本教程中我们下载的版本是 Python 2.7.3,尽管它 是一个编程平台,和普通程序一样,选择好安装本地安装路径,一路按“下一步”就可以完成 安装。 --有很多人会问,为什么不选择最新的 Python 3.X?在今日(2013 年 1 月 20 日)笔者观点 是:如果你想很快就开始用 Python 开发实际的系统,那么就应该选择 Python 2.7。Python 3.X 毫无疑问是未来的方向,语法也更清楚,但由于 3.X 版本没有很好的向下兼容性,很多可以 在 Python 2.X 中使用的功能模块目前在 Python 3.X 中尚无法使用。Python 3.X 的面包和牛奶 都在准备中,但还需要一段时间。 接下来,我们需要安装 pypyodbc 模块。pypyodbc 是一个用纯 Python 语言(Python 的强大 功能可见一斑)写的调用操作系统 ODBC 功能的单脚本模块,非常推荐,很强大(好吧, pypyodbc 是笔者创建的 )。安装 pypyodbc 的方式为: 从 http://code.google.com/p/pypyodbc/downloads/list 下 载 pypyodbc 文 件 ,目 前 最 新 的是 pypyodbc-0.9.1-SVN-r206.zip
下载后解压到一个临时目录中,双击目录中的 setup.py 文件即可安装此模块。 在本教程中,我们会在 Python 交互窗口中直接下命令,因此请用上述方法安装 pypyodbc。 今后在项目中,我们也可以将 zip 压缩包中的 pypyodbc.py 解压出来,放置于我们将要写的 脚本的同一个目录下,也可以直接在脚本中调用它了,无需单独安装。 准备完毕,我们可以开始用 Python 编写代码了! Access 2222)创建一个 Access Access Access 数据库,并在此数据库中建立相应的销售记录表 从这里开始,我们将开始真正变身为一名光荣的 Python 码农,而我作为码农教练,从你们 洒下第一行 Python 代码开始,我将详细讲它们的作用。我们首先会在 Python 的交互界面一 步一步完成代码动作,以了解每一步的效果,最后我们会将这些交互代码集中到一个脚本文 件中去,真正成为一个程序。 我们先打开 Python 交互界面:从 Windows 开始菜单找到 Python 2.7 目录,点击运行 Python 2.7 下面的 Python (Command Line),会有一个黑底白字的文本输入窗口跳出,含有如下字样。
这说明你已经可以在这个>>>符号后敲入 Python 代码命令,操纵 Python 完成一步步动作了。 我们一步一步来: 第一步:我们命令 Python 从它众多的模块库中,找出刚刚为它安装好的 pypyodbc 模块,供 我们在接下来的步骤中使用。 >>> import pypyodbc 第二步:我们要创建一个 Access 数据库,用以存放销售数据。这是 PyPyODBC 的一个特色 功能,可以方便地在 Windows 平台下创建空白的 Access 数据库。Access 数据库起名为 salesdb.mdb,我们把它放在 D 盘根目录下。 >>> pypyodbc.win_create_mdb('D:\\salesdb.mdb') 这时你可以看见在 D 盘下有一个 salesdb.mdb 的 Access 空白数据库文件被产生。 第三步 :使用 Access 的 ODBC 连接字 符串,通过 pypyodbc 模块获 得一个可以 连接 到 salesdb.mdb 数据库的 ODBC 连接对象 conn: >>>conn = pypyodbc.connect('Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\salesdb.mdb')
并从这个连接对象中,获取一个数据库操作游标 cur: >>>cur = conn.cursor() 第四步,在数据库中新建一个销售记录表 saleout 我们使用该游标的 execute 命令向 Access 数据库传递一句 SQL 命令,创建一个名为 saleout 的表: >>>cur.execute('''CREATE TABLE saleout ( ID COUNTER PRIMARY KEY, customer_name VARCHAR(25), product_name VARCHAR(30), price float, volume int, sell_time datetime);''') 这样数据库下就创建了一个含有表字段:ID(编号),customer_name(顾客名),product_name(商 品名),price(出售价格),volume(数量)和 sell_time(出售时间)的表。 最后,我们把前面的操作一次性提交,让它们在数据库中正式生效。 >>>cur.commit() 3333)向销售记录表中插入记录,记载销售交易情况 数据库创建好后,我们就可以往里面记载销售情况了。 第一步,我们记录一位江先生(江文)的顾客,于 2013 年 1 月 21 日,花 5000.5 元买了两 部华为 Ascend mate 手机: >>>cur.execute('''INSERT INTO saleout(customer_name,product_name,price,volume,sell_time) VALUES(?,?,?,?,?)''', 别忘了立即提交,使该笔记录正式在数据库中生效: >>>cur.commit() (u'江文','Huawei Ascend mate',5000.5,2,'2012-1-21')) 接下来我们再批量记录一批销售: >>>cur.execute('''INSERT INTO saleout(customer_name,product_name,price,volume,sell_time) VALUES(?,?,?,?,?)''', >>>cur.execute('''INSERT INTO saleout(customer_name,product_name,price,volume,sell_time) VALUES(?,?,?,?,?)''', >>>cur.execute('''INSERT INTO saleout(customer_name,product_name,price,volume,sell_time) VALUES(?,?,?,?,?)''', >>>cur.execute('''INSERT INTO saleout(customer_name,product_name,price,volume,sell_time) (u'郑现实','Huawei Ascend D2',5100.5,1,'2012-1-22')) (u'杨天真','Apple IPhone 5',6000.1,1,'2012-1-21')) (u'莫小闵','Huawei Ascend D2',5200.5,1,'2012-1-22'))
VALUES(?,?,?,?,?)''', 立即提交,使这 4 笔记录正式在数据库中同时正式生效: >>>cur.commit() (u'顾小白','Huawei Ascend mate',5000.5,1,'2012-1-22')) 至此,我们已经在系统中记录了 5 笔销售。在下面的步骤中,我们将查询这些记录。 Access Python 4444)用 Python Python Access Python 查询数据库中的数据,并压缩 Access Access 数据库文件 如果我们要查询 2012 年 1 月 21 日当天,我们所有华为产品的销售情况该如何做?这时我们 将传递一句 SQL 查询至 Access 数据库,并获得数据库查询所得的结果返回为 Python 中的 变量。 首先,传递 SQL 查询语句至 Access 数据库: >>>cur.execute('''SELECT * FROM saleout WHERE product_name LIKE '%Huawei%'''') 然后,从数据库查询结果抓取结果集的字段名信息: >>>for d in cur.description: print d[0], id customer_name product_name price volume sell_time 交互界面将显示出各字段的名称。我们接下来把结果集一行一行显示在屏幕上: >>>for row in cur.fetchall(): for field in row: print field, print '' 1 江文 Huawei Ascend mate 5000.5 2 2012-01-21 00:00:00 3 郑现实 Huawei Ascend D2 5100.5 1 2012-01-22 00:00:00 4 莫小闵 Huawei Ascend D2 5000.5 1 2012-01-22 00:00:00 5 顾小白 Huawei Ascend mate 5000.5 1 2012-01-22 00:00:00 这样就显示出了所有的结果集。 对于 Access 数据库,在长久的数据插入使用后,Access 数据库文件可能变得非常臃肿庞大。 PyPyODBC 提供了另一个特色功能,能够直接在 Python 程序中用代码调用清理压缩数据库。 我们现在将 D:\salesdb.mdb 压缩生成另外一个文件 salesdb_backup.mdb: 首先,关闭数据库连接: >>>conn.close()
然后,使用 pypyodbc 的 win_compact_mdb 方法清理压缩数据库文件: >>>pypyodbc.win_compact_mdb('D:\\salesdb.mdb','D:\\salesdb_backup.mdb') 这时会发现另外一个清理压缩过的文件 salesdb_backup.mdb 产生在 D 盘下,这时大小和原 来的数据库没有大差别,但在数据库长时间频繁的使用后,压缩清理的效果会非常惊人。 Python Python 保存成 Python Python 程序文件与总结 前面的教程中,我们使用了 Python 的交互式界面,一行代码一行代码地操纵 Python 完成了 个个步骤。我们可以把这些代码记在一个后缀名为 py 的文本文件中,这样 Python 就会按照 文本文件中的代码顺序执行。本教程中的代码程序可以在 sales_sample.py 上下载获得。 可能有的读者会提问,这篇教程讲述的是对 Access 数据库进行操作,其他数据库怎么操作 呢?其实,只要你使用的数据库支持 ODBC(笔者还没听说过不支持 ODBC 的关系型数据 库),那就可以用 pypyodbc 对数据库进行操 作。 pypyodbc 目前已知支持的 数据库有: Access,SQLServer,MySQL,PostgreSQL 甚至,Excel。 还是那句中国古话,师傅领进门,修行靠自身。希望本文能为读者开启一扇 Python 学用之 门。
分享到:
收藏