أكثر

استخدام Python للتمييز بين قواعد البيانات الجغرافية الشخصية وقواعد بيانات MS Access


أحتاج إلى سرد قواعد البيانات الجغرافية للخادم ، لتحليلها ومعالجتها. ومع ذلك ، يقوم المستخدمون بإنشاء قواعد جغرافية شخصية وقواعد بيانات جغرافية MS Access.

قائمةmdbتُبلغ الملفات عن كلا النوعين من قواعد البيانات ، أود تضييق نطاق القائمة إلى الجغرافيقواعد البيانات فقط. خاصية مساحة العمل المنطقيةis_geodatabaseسيكون بالضبط ما أحتاج إلى استخدامه ، لأنه يشير إلى ما إذا كانت قاعدة البيانات ممكّنة مكانيًا أم لا. لسوء الحظ ، هذه الخاصية متاحة فقط لقواعد بيانات SDE.

أنا أستخدم ArcGIS 10.0. والنص أدناه. تم الاختيار في القائمةmdbالملفات حسب الامتداد باستخدامos.walk ()عوضا عنمساحات العمل ()لسرعة العملية ، ولأنListWorkspacesيسترد قواعد بيانات MS Access على أي حال. كيف يمكنني تعديل النص الخاص بي لتقديم تقرير فقط قواعد البيانات الجغرافية الشخصية ، وليس قواعد بيانات الوصول MS المسطحة؟

للمسار ، والأرقام الفرعية ، والملفات في os.walk (analed_root_folder): بالنسبة إلى x في الملفات: if x.lower (). endswith (". mdb") == True: ext_mdb.append (os.path.join (المسار ، x ))

تحقق من ذلك باستخدام odbc وابحث إذا كانت قاعدة البيانات تحتوي على جدول يبدأ بـ 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 ، مستخدم ، كلمة مرور) cnxn = pyodbc.connect (odbc_conn_str) cursor = cnxn.cursor () if cursor.tables (table =' GDB_GeomColums '). fetchone (): print (' هذه هي قاعدة بيانات ArcGIS الشخصية الجغرافية ') del cursor cnxn.close ()


شاهد الفيديو: Python DataBases 116 قواعد البيانات (شهر اكتوبر 2021).