教程学院
图像设计 多媒体类 机械制图 办公软件 操作系统 系统编程 网站编程 网页制作 数据库类 网络路由 网络工程 网络安全 考试认证
酷网学院
CAD
AutoCad Cam350 ProEngineer GCcam MATLAB Unigraphics SolidWorks CAXA Solid3000 Cimatron EdgeCAM
系统
安全 防火墙 病毒 WinXP Win2003 Vista
数据库
编程
网络
  网站导航: 库库中文网 · 系统编程教程 · VC语言 · VC编程技巧  

Python 地数据库操作

教程推荐
『Python 地数据库操作』如果文章有大量图片,显示会较慢,请等待图片下载完成
 
点击数: 更新时间:2009-3-6 20:41:07 

  数据库的操作在目前的 Python 里面已经变得十分的好用,因为有了一套 API 标准。本文下面就讲讲如何使用这套API。它包括以下部分:

一、模块接口

connect( parameters... )

其中的参数格式如下:

dsn 数据源名称

user 用户名(可选)

password 密码(可选)

host 主机名(可选)

database 数据库名(可选)

举个例子:

connect(dsn=''myhost:MYDB'',user=''guido'',password=''234$'')

或者

connect(''218.244.20.22'',''username'',''password'',''databasename'')

此标准规定了以下的一些全局变量,

apilevel:

表示 DB-API 的版本,分 1.0 和 2.0 。如果没有定义,则默认为 1.0。

threadsafety:

0 Threads may not share the module.
1 Threads may share the module, but not connections.
2 Threads may share the module and connections.
3 Threads may share the module, connections and cursors.

paramstyle:

用于表示参数的传递方法,分为以下五种:
''qmark'' 问号标识风格. e.g ''... WHERE name=?''
''numeric'' 数字,占位符风格. e.g ''... WHERE name=:1''
''named'' 命名风格. e.g ''WHERE name=:name''
''format'' ANSI C printf风格. e.g ''... WHERE name=%s''
''pyformat'' Python扩展表示法. e.g ''... WHERE name=%(name)s''

异常类:


StandardError

|__Warning

|__Error

    |__InterfaceError

    |__DatabaseError

        |__DataError

        |__OperationalError

        |__IntegerityError

        |__InternalError

        |__ProgrammingError

        |__NotSupportedError		

二、连接对象

连接对象包含如下方法:

.close()
关闭连接

.commit()
用于事务处理里面的提交操作

.rollback()
用于事务处理里面的回滚操作

.cursor()
获得一个游标


三、游标对象

游标对象包含如下属性和方法:

.description
一个列表(name,type_code,display_size,internal_size,precision,scale,null_ok) 此属性只有在取得了数据之后才有,不然会是null值

.rowcount
表示返回值的行数.如果没有执行executeXXX()方法或者此模块没有实现这个方法,就会返回-1

.callproc(procname[,parameters])
(此为可选方法,应为不是所有的数据库都支持存储过程的)

.close()
关闭游标

.execute(operation[,parameters])
准备并执行一个数据库操作(包括查询和命令)

.executemany(operation,seq_of_parameters)
准备一个数据库命令,然后根据参数执行多次命令

.fetchone()
返回第一行的查询结果

.fetchmany([size=cursor.arraysize])
返回指定个多个行的值

.fetchall()
返回所有的查询结果

.arraysize
这个参数值表示fetchmany默认情况之下获取的行数


四、数据类型与定义

定义一些常用的数据类型.但是目前用不到,就先不分析

备注:当然,我们要知道的是,这个只是一个标准,一般来说标准里面定义了的会实现,但还有很多特定的实现,我们也需要去掌握哪些东西,不过如果我们将这些标准的掌握了,那么操作一般的就不会有问题了.

下面给出几个数据库相关的网址:
  • Database Topic Guide :Python 的数据库使用向导,有相当不错的资料,包括API定义,驱动联结等等;
  • MSSQL 驱动:就是MSSQL的驱动程序 ;


五、例子

  下面举的例子是以MSSQL为样板的,但是换成其他的驱动也一样可以做,这个就和 Perl 的数据库操作十分的类似,可以让我们很方便的实现不同数据库之间的移植工作。

1、查询数据

import MSSQL



db = MSSQL.connect(''SQL Server IP'', ''username'', ''password'', ''db_name'')

c = db.cursor()

sql = ''select top 20 rtrim(ip), rtrim(dns) from detail''

c.execute(sql)

for f in c.fetchall():

print "ip is %s, dns is %s" % (f[0], f[1])

2、插入数据

sql = ''insert into detail values(''192.168.0.1'', ''www.dns.com.cn'')

c.execute(sql)

3、ODBC的一个例子

import dbi, odbc # ODBC modules

import time # standard time module



dbc = odbc.odbc( # open a database connection

''sample/monty/spam'' # ''datasource/user/password''

)



crsr = dbc.cursor() # create a cursor

crsr.execute( # execute some SQL """

SELECT country_id, name, insert_change_date

FROM country

ORDER BY name

"""

)



print ''Column descriptions:'' # show column descriptions

for col in crsr.description:

print '' '', col

result = crsr.fetchall() # fetch the results all at once

print ''\nFirst result row:\n '', result[0] # show first result row

print ''\nDate conversions:'' # play with dbiDate object

date = result[0][-1]

fmt = '' %-25s%-20s''

print fmt % (''standard string:'', str(date))

print fmt % (''seconds since epoch:'', float(date))

timeTuple = time.localtime(date)

print fmt % (''time tuple:'', timeTuple)

print fmt % (''user defined:'', time.strftime(''%d %B %Y'', timeTuple))



-------------------------------output--------------------------------



Column descriptions:

(''country_id'', ''NUMBER'', 12, 10, 10, 0, 0)

(''name'', ''STRING'', 45, 45, 0, 0, 0)

(''insert_change_date'', ''DATE'', 19, 19, 0, 0, 1)



First result row:

(24L, ''ARGENTINA'', <DbiDate object at 7f1c80>)



Date conversions:

standard string: Fri Dec 19 01:51:53 1997

seconds since epoch: 882517913.0

time tuple: (1997, 12, 19, 1, 51, 53, 4, 353, 0)

user defined: 19 December 1997

 

】【关闭窗口
  上一页:
  下一页:后面的文章暂时没有更新了,请多关注QQgb.com
 ·网站导航: 库库中文网 · 系统编程教程 · VC语言 · VC编程技巧
VC编程技巧:相关文章
VC编程技巧点击榜
普通教程关于PDEVICEPROPERTIES地疑难 向
推荐教程Tcp阻塞模式下,发送数据后立即
普通教程扩展函数AcceptEx关于client关闭
普通教程vc程序中直接显示JIF图片
普通教程Python 地数据库操作
普通教程Javascript - Prototype Based 
普通教程QQ魔法表情完成机制
普通教程为你地MFC程序增加宏脚本语言
普通教程发送快捷方式到指定地文件夹
普通教程reference memory ,or when及其
PHOTOSHOP - 基础教程 抠图专题 蒙版专题 3DsMax 基础 设计实例 Maya设计实例
3D设计教程
advertisement
关于站点 - 广告服务 - 联系我们 - 版权隐私 - 免责声明 - 合作伙伴 - 程序支持 - 网站地图 - 返回顶部
网站文本地图
版权所有:库库中文 2005-2007 欢迎各种媒体转载我们的原创作品[转载请注明出处]
copyright ? 2005-2008 www.QQGB.com online services. all rights reserved. 蜀ICP备05015578
Optimized for 1024x768 to Firefox,Opera and MS-IE6. Site powered by EQL. 电脑硬件 电脑知识 教程学习
红盾
热爱电脑,热爱生活
拥有电脑,拥有生命
让我们享受拥有电脑的时光