您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > Python操作Access数据库步骤
Python操作Access数据库步骤之1、建立数据库连接1.importwin32com.client2.conn=win32com.client.Dispatch(r'ADODB.Connection')3.DSN='PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=C:/MyDB.mdb;'4.conn.Open(DSN)Python操作Access数据库步骤之2、打开一个记录集1.rs=win32com.client.Dispatch(r'ADODB.Recordset')2.rs_name='MyRecordset'#表名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(r'ADODB.Connection')2.DSN='PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=C:/MyDB.mdb;'3.sql_statement=InsertINTO[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=03.while1:4.ifrs.EOF:5.break6.else:7.countcount=count+18.rs.MoveNext()注意:如果一个记录是空的,那么将指针移动到第一个记录将导致一个错误,因为此时recordcount是无效的。解决的方法是:打开一个记录集之前,先将Cursorlocation设置为3,然后再打开记录集,此时recordcount将是有效的。例如:1.rs.Cursorlocation=3#don'tuseparenthesishere2.rs.Open('Select*FROM[Table_Name]',conn)#besureconnisopen3.rs.RecordCount#noparenthesishereeitherPython连接Access和读取Access数据库的例子其实这个Python连接Access和读取Access数据库的例子是写给自己看的,网上已经有Python读取Access的例子了,我这个也是参考以上制作的.而这个例子应该是只能在windows使用吧!而且需要用到win32com.client这个库,而我在引用win32com.client时出错了,看来不是python常备的库,看来需要安装的!在参考了网上的HowcanIimportwin32com.clienttomyapp?之后,才知道怎样安装win32com.client,以下是这篇文章的网址=1安装win32com.client的网址:下边是代码:1.#-*-coding:gb2312-*-2.importwin32com.client3.importos,sys,string4.conn=win32com.client.Dispatch(r’ADODB.Connection’)5.DSN=‘PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASOURCE=SpiderResult.mdb;’6.conn.Open(DSN)7.8.print“connect…”9.10.rs=win32com.client.Dispatch(r’ADODB.Recordset’)11.#rs_name=‘Content’#表名12.#rs.Open(‘['+rs_name+']‘,conn,1,3)13.#Content这个表是我用火车头采集当当网数据的数据库14.15.rs.Open(‘Selecttop*FROMContentwhere’,conn,1,3)16.17.#注意:如果一个记录是空的,将导致一个错误,所以我加了一句判断有没有记录,防止错误.18.ifrs.recordcount==0:19.sys.exit()20.21.rs.MoveFirst()22.printrs.recordcount23.24.whilenotrs.EOF:25.printrs.Fields.Item(3).Value26.print“————————————-”27.rs.MoveNext()28.29.print“RecordCount:“,rs.recordcount30.31.rs.Close()python+AO脚本练习2010-04-2320:12中国广州天河开始练习做python2.4.4+arcgisarcobject9.2的脚本,下面是一个代码示例,获得Access(.mdb)文件下所有的FeatureClass但不包含位于FeatureDataset中的!程序代码如下:#-*-coding:cp936-*-#://starship.python.net/crew/theller/comtypes/#2010-04-23星期五开始开发importsys,os.pathfromcomtypes.clientimportCreateObjectfromstandfldsimportfcotherNamesasstandflds_fcotherNames#别名定义fromcosole_colorimport*#输出颜色printWait('Pleasewaitting...')defGetLibPath():import_winregkeyESRI=_winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,SOFTWARE\\ESRI\\ArcGIS)return_winreg.QueryValueEx(keyESRI,InstallDir)[0]+com\\#defGetModule(sModuleName):fromcomtypes.clientimportGetModulesLibPath=GetLibPath()GetModule(sLibPath+sModuleName)#defGetLicenseState(pInit,eProdect):licenseStatus=pInit.IsProductCodeAvailable(eProduct)iflicenseStatus==esriSystem.esriLicenseAvailable:licenseStatus=pInit.Initialize(eProduct)#print('licenseStatus='+str(licenseStatus))to_b_checkout=licenseStatus==esriSystem.esriLicenseCheckedOutifto_b_checkout:printResult('通过产品验证!')return(licenseStatus==esriSystem.esriLicenseCheckedOut)else:printError('无法通过验证!');returnFalse##pleasesee:C:\ProgramFiles\ArcGIS\comGetModule(esriSystem.olb)GetModule(esriGeoDatabase.olb)GetModule(esriDataSourcesGDB.olb)importcomtypes.gen.esriSystemasesriSystemimportcomtypes.gen.esriGeoDatabaseasesriGeoDatabaseimportcomtypes.gen.esriDataSourcesGDBasesriDataSourcesGDBpInit=CreateObject(esriSystem.AoInitialize,interface=esriSystem.IAoInitialize)eProduct=esriSystem.esriLicenseProductCodeEngineGetLicenseState(pInit,eProduct)defChangeFeatClssAliasName():历遍一个mdb(Access)下相关FeatureCalssmdbPath=sys.argv[1]printResult('选择数据库\n%s\n%s'%os.path.split(mdbPath))pWSFact=CreateObject(esriDataSourcesGDB.AccessWorkspaceFactory,interface=esriGeoDatabase.IWorkspaceFactory)pWor=pWSFact.OpenFromFile(mdbPath,0)#IWorkspacepEnumDatasetName=pWor.DatasetNames(esriGeoDatabase.esriDTFeatureClass)#IEnumDatasetNamepEnumDatasetName.Reset()a=pEnumDatasetName.Next()#IDatasetNameoutputfmt=%10s|%5s|%15s|%40s|printResult(outputfmt%('Name','Type','FeatureType','Category'))whilea:b=a.QueryInterface(esriGeoDatabase.IFeatureClassName)#IFeatureClassNameprint('-'*80)#b.FeatureType:esriFeatureType#a.Type:esriDatasetType#a.CategoryStringprintWait(outputfmt%(a.Name,a.Type,b.FeatureType,a.Category))a=pEnumDatasetName.Next()#ChangeFeatClssAliasName()pInit.Shutdown()htmlbodydivimgwidth='77'height='5'src='chrome://livemargins/skin/monitor-background-horizontal.png'style='position:absolute;left:-77px;top:-5px'/imgsrc='chrome://livemargins/skin/monitor-background-vertical.png'style='position:absolute;left:0;top:-5px;'/imgid='monitor-play-button'src='chrome://livemargins/skin/monitor-play-button.png'onmouseover='this.style.opacity=1'onmouseout='this.style.opacity=0
本文标题:Python操作Access数据库步骤
链接地址:https://www.777doc.com/doc-4890802 .html