Mais

Usando Python para discriminar Bancos de Dados Geográficos Pessoais e Bancos de Dados MS Access


Preciso listar os bancos de dados geográficos de um servidor, para analisá-los e processá-los. No entanto, meus usuários estão criando bancos de dados geográficos pessoais e bancos de dados geográficos do MS Access.

Listagemmdbarquivos relata os dois tipos de bancos de dados, gostaria de restringir a lista para geobancos de dados apenas. A propriedade booleana do espaço de trabalhois_geodatabaseseria exatamente o que eu preciso usar, pois indica se um banco de dados está espacialmente habilitado ou não. Infelizmente, essa propriedade está disponível apenas para bancos de dados SDE.

Estou usando o ArcGIS 10.0. e o script abaixo. A escolha foi feita para listarmdbarquivos por extensão usandoos.walk ()ao invés dearcpy.ListWorkspaces ()para velocidade de processo e porqueListWorkspacesrecupera bancos de dados MS Access de qualquer maneira. Como posso alterar meu script para relatar bases de dados geográficas pessoais, e não bases de dados de acesso MS planas?

para caminho, subdiretórios, arquivos em os.walk (analisado_root_pasta): para x em arquivos: if x.lower (). endswith (". mdb") == Verdadeiro: ext_mdb.append (os.path.join (caminho, x ))

Verifique com odbc e procure se o banco de dados contém uma tabela começando com GDB_

import pyodbc db_file = "C: /path/to/my/database/MyDataBase.mdb" user = "password =" odbc_conn_str = 'DRIVER = {Microsoft Access Driver (* .mdb)}; DBQ =% s; UID =% s; PWD =% s '%  (db_file, usuário, senha) cnxn = pyodbc.connect (odbc_conn_str) cursor = cnxn.cursor () if cursor.tables (table =' GDB_GeomColums '). fetchone (): print (' Este é ArcGIS Personal Geodatabase ') del cursor cnxn.close ()


Assista o vídeo: How to Connect Python with Microsoft Access Database (Outubro 2021).