《Python操作Access数据库步骤》由会员分享,可在线阅读,更多相关《Python操作Access数据库步骤(109页珍藏版)》请在金锄头文库上搜索。
1、Python 操作 Access 数据库步骤之 1、建立数据库连接1. import win32com.client 2. conn = win32com.client.Dispatch(rADODB.Connection) 3. DSN = PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/MyDB.mdb; 4. conn.Open(DSN) Python 操作 Access 数据库步骤之 2、打开一个记录集 1. rs = win32com.client.Dispatch(rADODB.Recordset) 2. rs_name = MyRe
2、cordset#表名 3. rs.Open( + rs_name + , conn, 1, 3) Python 操作 Access 数据库步骤之 3、对记录集操作 1. rs.AddNew() 2. rs.Fields.Item(1).Value = data 3. rs.Update() Python 操作 Access 数据库步骤之 4、用 SQL 来插入或更新数据 1. conn = win32com.client.Dispatch(rADODB.Connection) 2. DSN = PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=C:/My
3、DB.mdb; 3. sql_statement = Insert INTO Table_Name (Field_1, Field_2) VALUES (data1, data2) 4. conn.Open(DSN) 5. conn.Execute(sql_statement) 6. conn.Close() Python 操作 Access 数据库步骤之 5、遍历记录 1. rs.MoveFirst() 2. count = 0 3. while 1: 4. if rs.EOF: 5. break 6. else: 7. countcount = count + 1 8. rs.MoveNe
4、xt() 注意:如果一个记录是空的,那么将指针移动到第一个记录将导致一个错误,因为此时 recordcount 是无效的。解决的方法是:打开一个记录集之前,先将 Cursorlocation 设置为 3,然后再打开记录集,此时recordcount 将是有效的。例如:1. rs.Cursorlocation = 3 # dont use parenthesis here 2. rs.Open(Select * FROM Table_Name, conn) # be sure conn is open 3. rs.RecordCount # no parenthesis here either
5、Python 连接 Access 和读取 Access 数据库的例子其实这个 Python 连接 Access 和读取 Access 数据库的例子是写给自己看的,网上已经有 Python 读取Access 的例子了,我这个也是参考以上制作的.而这个例子应该是只能在 windows 使用吧!而且需要用到 win32com.client 这个库,而我在引用win32com.client 时出错了,看来不是 python 常备的库,看来需要安装的!在参考了网上的 How can I import win32com.client to my app ? 之后,才知道怎样安装win32com.clien
6、t,以下是这篇文章的网址http:/ win32com.client 的网址: https:/ # -*- coding: gb2312 -*- 2. import win32com.client 3. import os, sys, string 4. conn = win32com.client.Dispatch(rADODB.Connection) 5. DSN = PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=SpiderResult.mdb; 6. conn.Open(DSN) 7.8. print “connect” 9.10. rs =
7、 win32com.client.Dispatch(rADODB.Recordset) 11. #rs_name = Content#表名 12. #rs.Open( + rs_name + , conn, 1, 3) 13. # Content 这个表是我用火车头采集当当网数据的数据库 14.15. rs.Open(Select top * FROM Content where, conn,1, 3) 16.17. # 注意:如果一个记录是空的,将导致一个错误,所以我加了一句判断有没有记录,防止错误. 18. if rs.recordcount=0: 19. sys.exit() 20.21
8、. rs.MoveFirst() 22. print rs.recordcount 23.24. while not rs.EOF: 25. print rs.Fields.Item(3).Value 26. print “-” 27. rs.MoveNext() 28.29. print “Record Count: “,rs.recordcount 30.31. rs.Close() python+AO 脚本练习2010-04-23 20:12 中国广州天河开始练习做 python2.4.4+arcgis arcobject9.2 的脚本,下面是一个代码示例,获得Access(.mdb)文
9、件下所有的 FeatureClass 但不包含位于 FeatureDataset 中的! 程序代码如下:# -*- coding: cp936 -*-#http:/ 2010-04-23 星期五 开始开发import sys,os.pathfrom comtypes.client import CreateObjectfrom standflds import fcotherNames as standflds_fcotherNames # 别名定义from cosole_color import * # 输出颜色printWait(Please waitting.)def GetLibPat
10、h():import _winregkeyESRI = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, SOFTWAREESRIArcGIS)return _winreg.QueryValueEx(keyESRI, InstallDir)0 + com#def GetModule(sModuleName):from comtypes.client import GetModulesLibPath = GetLibPath()GetModule(sLibPath + sModuleName)#def GetLicenseState(pInit,eProde
11、ct):licenseStatus = pInit.IsProductCodeAvailable(eProduct)if licenseStatus=esriSystem.esriLicenseAvailable:licenseStatus = pInit.Initialize(eProduct)#print(licenseStatus=+str(licenseStatus)to_b_checkout = licenseStatus = esriSystem.esriLicenseCheckedOutif to_b_checkout:printResult(通过产品验证!)return (li
12、censeStatus = esriSystem.esriLicenseCheckedOut)else:printError(无法通过验证 !);return False# please see:C:Program FilesArcGIScomGetModule(esriSystem.olb)GetModule(esriGeoDatabase.olb)GetModule(esriDataSourcesGDB.olb)import comtypes.gen.esriSystem as esriSystemimport comtypes.gen.esriGeoDatabase as esriGeo
13、Databaseimport comtypes.gen.esriDataSourcesGDB as esriDataSourcesGDBpInit = CreateObject(esriSystem.AoInitialize, interface=esriSystem.IAoInitialize)eProduct = esriSystem.esriLicenseProductCodeEngineGetLicenseState(pInit,eProduct)def ChangeFeatClssAliasName():历遍一个 mdb(Access)下相关 FeatureCalssmdbPath=
14、sys.argv1printResult(选择数据库n%sn%s % os.path.split(mdbPath)pWSFact = CreateObject(esriDataSourcesGDB.AccessWorkspaceFactory, interface=esriGeoDatabase.IWorkspaceFactory)pWor = pWSFact.OpenFromFile(mdbPath, 0) # IWorkspacepEnumDatasetName = pWor.DatasetNames(esriGeoDatabase.esriDTFeatureClass ) # IEnum
15、DatasetNamepEnumDatasetName.Reset()a = pEnumDatasetName.Next() # IDatasetNameoutputfmt = %10s | %5s | %15s | %40s |printResult(outputfmt %(Name,Type,FeatureType,Category)while a:b = a.QueryInterface(esriGeoDatabase.IFeatureClassName) # IFeatureClassNameprint (-*80)# b.FeatureType: esriFeatureType# a.Type: esriDatasetType# a.Category StringprintWait( outputfmt %(a.Name,a.Type,b.FeatureT