1、 1. 安装python软件包: /download/ 2. 安装Mark Hammond的最新版本的python win32扩展 - PythonWin: /crew/mhammond/ 3. 安装必要的ODBC驱动程序,用ODBC管理器为你的数据库配置数据源等参数你的应用程序将需要事先导入两个模块: - 支持各种各样的SQL数据类型,例如:日期-dates 编译产生的ODBC接口下面有一个例子: import dbi, odbc# 导入ODBC模块 import time # 标准时间模块dbc = (# 打开一个数据库连接 sample/monty/spam # 数据源/用户名/密码 )
2、 crsr = () # 产生一个cursor (# 执行SQL语言 SELECT country_id, name, insert_change_date FROM country ORDER BY name ) print Column descriptions: # 显示行描述 for col in : print , col result = () # 一次取出所有的结果 print nFirst result row:n , result0 # 显示结果的第一行 print nDate conversions: # 看看dbiDate对象如何? date = result0-1 fm
3、t = %-25s%-20s print fmt % (standard string:, str(date) print fmt % (seconds since epoch:, float(date) timeTuple = (date) print fmt % (time tuple:, timeTuple) print fmt % (user defined:, (%d %B %Y, timeTuple) 下面是结果: -输出(output)- Column descriptions: (country_id, NUMBER, 12, 10, 10, 0, 0) (name, STRI
4、NG, 45, 45, 0, 0, 0) (insert_change_date, DATE, 19, 19, 0, 0, 1)First result row: (24L, ARGENTINA, ) Date conversions: standard string: Fri Dec 19 01:51:53 1997 seconds since epoch: time tuple:(1997, 12, 19, 1, 51, 53, 4, 353, 0) user defined:19 December 1997大家也可以去/windows/win32/看看,那儿有两个Hirendra Hin
5、docha写的例子,还不错.注意, 这个例子中,结果值被转化为Python对象了.时间被转化为一个dbiDate对象.这里会有一点限制,因为dbiDate只能表示UNIX时间(1 Jan 1970 00:00:00 GMT)之后的时间.如果你想获得一个更早的时间,可能会出现乱码甚至引起系统崩溃.*_*方法三: 使用 calldll模块 (Using this module, you can use ODBC API directly. But now the python version is , and I dont know if other version is compatible w
6、ith it. 老巫:-)Sam Rushing的calldll模块可以让Python调用任何动态连接库里面的任何函数,厉害吧?哈.其实,你能够通过直接调用里面的函数操作提供了一个包装模块,就是来做这个事情的.也有代码来管理数据源,安装ODBC,实现和维护数据库引擎 (Microsoft Access).在那些演示和例子代码中,还有一些让人侧目的好东东,比如,有一个信息循环和窗口过程的Python函数!你可以到Sams Python Software去找到calldll的相关连接,那儿还有其他好多有趣的东西下面是安装CALLDLL包的步骤: 1. 安装PYTHON软件包(到现在为止最多支持版本
7、) 2. 下载: ftp:/pub/python/python-ext/ 3. 在LIB路径下面创建一个新路径比如说: c:Program FilesPythonlibcaldll 4. 在原目录下解压 5. 移动calldlllib中所有的文件到上面一个父目录(calldll)里面,删除子目录(lib) 6. 在CALL目录里面生成一个file _init_.py文件,象这样: # File to allow this directory to be treated as a python package. 7. 编辑calldll: 在和里面,改变为下面是一个怎么使用calldll的例子:
8、 from calldll import odbcdbc = ().connection() # create connection (sample, monty, spam) # connect to db # alternatively, use full connect string: # _connect(DSN=sample;UID=monty;PWD=spam) print DBMS: %s %sn % (# show DB information _info(_DBMS_NAME), _info(_DBMS_VER) ) result = ( # execute query &
9、return results SELECT country_id, name, insert_change_date FROM country ORDER BY name ) print Column descriptions: # show column descriptions for col in result0: print , col print nFirst result row:n , result1 # show first result row -output(输出)-DBMS: Oracle Column descriptions: (COUNTRY_ID, 3, 10,
10、0, 0) (NAME, 12, 45, 0, 0) (INSERT_CHANGE_DATE, 11, 19, 0, 1)First result row: 24, ARGENTINA, 1997-12-19 01:53方法四: 使用ActiveX Data Object(ADO) 现在给出一个通过Microsofts ActiveX Data Objects (ADO)来连接MS Access 2000数据库的实例.使用ADO有以下几个好处: 首先,与DAO相比,它能更快地连接数据库;其次,对于其他各种数据库(SQL Server, Oracle, MySQL, etc.)来说,ADO都是非
11、常有效而方便的;再有,它能用于XML和文件和几乎其他所有数据,因此微软也将支持它比DAO久一些.第一件事是运行makepy.尽管这不是必须的,但是它对于提高速度有帮助的.而且在PYTHONWIN里面运行它非常简单: 找到工具栏上ToolsCOM MakePy utilities,你会看到弹出一个Select Library的对话框, 在列表中选择Microsoft ActiveX Data Objects Library (或者是你所有的版本). 然后你需要一个数据源名Data Source Name DSN 和一个连接对象. 我比较喜欢使用DSN-Less 连接字符串 (与系统数据源名相比,
12、它更能提高性能且优化代码) 就MS Access来说,你只需要复制下面的DSN即可.对于其他数据库,或者象密码设置这些高级的功能来说,你需要去 Control Panel控制面板 | 管理工具Administrative Tools | 数据源Data Sources (ODBC). 在那里,你可以设置一个系统数据源DSN. 你能够用它作为一个系统数据源名,或者复制它到一个字符串里面,来产生一个DSN-Less 的连接字符串. 你可以在网上搜索DSN-Less 连接字符串的相关资料. 好了,这里有一些不同数据库的DSN-Less连接字符串的例子:SQL Server, Access, FoxP
13、ro, Oracle , Oracle, Access, SQL Server, 最后是 MySQL. import conn = (r) DSN = PROVIDER=;DATA SOURCE=C:/; (DSN) 经过上面的设置之后,就可以直接连接数据库了: 首要的任务是打开一个数据集/数据表 rs = (r) rs_name = MyRecordset ( + rs_name + , conn, 1, 3) 1和3是常数.代表adOpenKeyset 和adLockOptimistic.我用它作为默认值,如果你的情况不同的话,或许你应该改变一下.进一步的话题请参考ADO相关材料. 打开数
14、据表后,你可以检查域名和字段名等等 flds_dict = for x in range(): .flds_dictx = (x).Name 字段类型和长度被这样返回A : print (1).Type 202 # 202 is a text field print (1).DefinedSize 50 # 50 Characters 现在开始对数据集进行操作.可以使用SQL语句INSERT INTO或者AddNew() 和Update() () (1).Value = data () 这些值也能够被返回: x = (1).Value print x data 因此如果你想增加一条新的记录,不必查看数据库就知道什么number 和AutoNumber 字段已经产生了 x = (Auto_Number_Field_Name).Value # x contains the AutoNumber (Field_Name).Value = data () 使用ADO,你也能得到数据库里面所有表名的列表: oCat = (r) = conn oTab = for x in oTab: .if = TABLE: . print 关闭连接. 注意这里C是大写,然而关闭文件连接是小写的c. ()