Công nghệ nào được sử dụng đằng sau con trỏ ArcPy?


8

Tôi đang sử dụng ArcGIS Server 10.0. Tôi có một công cụ địa lý bằng cách sử dụng tìm kiếm arcpy, cập nhật và chèn con trỏ. Tôi muốn biết thêm về công nghệ đằng sau những con trỏ này.

Nó có sử dụng bất kỳ trình điều khiển hoặc nhóm để kết nối với cơ sở dữ liệu (tôi đang sử dụng Oracle 11g) không?

Nó có mở một liên kết với DB một lần khi tạo con trỏ và đóng nó khi con trỏ bị xóa không? Còn giao dịch thì sao?

Con trỏ có mở một liên kết mới và giao dịch với DB mỗi khi một hàng được cập nhật hoặc chèn không?

Câu trả lời:


4

Tất cả ArcPy làm là cung cấp các hook vào máy tính để bàn ArcGIS bình thường. Giống như máy tính để bàn một khi bạn có kết nối, nó sẽ giữ cho đến khi nó được ArcGIS đóng một cách rõ ràng (thường là khi các cửa sổ python liên quan được đóng lại). Đối với các trình điều khiển, nó sẽ sử dụng các trình điều khiển bạn đã cài đặt cho ArcGIS để kết nối với ArcSDE / RDBMS của bạn


Tôi có một công cụ địa lý không mở bất kỳ cửa sổ nào. Có nghĩa là liên kết vẫn mở cho đến khi ứng dụng thực thi del myCursor?
yo_haha

1
Nếu bạn đang sử dụng các quy trình không có cửa sổ, kết nối sẽ mở cho đến khi quy trình được đóng lại. ArcGIS rất tích cực với các loại khóa dữ liệu khác nhau mà nó đặt trên bất kỳ dữ liệu nào được sử dụng, bao gồm cả các kết nối cơ sở dữ liệu mở. Ngay cả sau khi xóa tất cả các tham chiếu đến kết nối hoặc tập dữ liệu, ArcGIS vẫn có thể giữ kết nối đó ở chế độ nền và khóa cho đến khi ứng dụng có khóa đó được đóng lại. Nó đã là một nỗi đau lớn cho người dùng trong nhiều năm. Sử dụng chức năng del sẽ xóa tất cả các tham chiếu trong ứng dụng python của bạn, nhưng nó không nhất thiết sẽ khiến ArcGIS thực sự đóng kết nối cơ sở dữ liệu.
Lemur

1
Tình huống bạn mô tả dường như đã được cải thiện vào ngày 10.1 (xem bình luận của Jason cho bài đăng trên blog này: sgillies.net/blog/1067/get-with-it )
blah238

@ blah238 liên kết không đầy đủ, vì vậy đây là url đầy đủ cho bài đăng được đề cập: sgillies.net/2011/02/01/get-with-it.html
Priscilla

3

Bạn cần hiểu khái niệm về con trỏ Python.

Chúng được mô hình hóa sau các con trỏ cơ sở dữ liệu SQL trong PEP 249: Đặc tả API cơ sở dữ liệu Python v2.0 để xử lý các kết quả được trả về bởi các truy vấn cơ sở dữ liệu.

Phần lớn các giao diện cơ sở dữ liệu Python tuân thủ tiêu chuẩn này: cx_Oracle (Oracle), Psycopg2 (PostgreQuery / PostGIS), MySQLdb (MySQL), sqlite3 (SQLite), v.v.

Một con trỏ cho phép truy xuất một hoặc nhiều hàng kết quả, cho đến khi tất cả các hàng khớp được xử lý và nó sẽ tìm nạp toàn bộ tập kết quả cùng một lúc, điều này có thể gây ra vấn đề về tốc độ xử lý (hiệu suất) ( Có gì nhanh hơn con trỏ không trong ArcGIS để tính toán hồ sơ? ).

Các con trỏ cơ sở dữ liệu thường trả về danh sách các bộ dữ liệu hoặc danh sách danh sách trong khi các phương thức con trỏ trong ArcGIS trả về một đối tượng liệt kê Python.

Để cải thiện giải pháp con trỏ, tồn tại một số trình bao bọc cung cấp giao diện đơn giản cho cơ sở dữ liệu SQL. Một số trong số này có thể được gọi là trình ánh xạ quan hệ đối tượng hoặc ORM (tạo các đối tượng Pythonic từ các hàng cơ sở dữ liệu) và các đối tượng khác chỉ có thể giúp tạo SQL hoặc cung cấp hỗ trợ ánh xạ đơn giản (xem Lập trình cơ sở dữ liệu cấp cao hơn )

Đối với ArcPy, các giải pháp được cung cấp bởi, ví dụ, Sean Gillies ( Nhận với nó ) và các giải pháp khác.

Các giải pháp không gian địa lý khác (PyQGIS, cỏ, osgeo.ogr, Pyshp, Rpy, Fiona, PySAL, v.v.) không sử dụng con trỏ, giúp mọi việc dễ dàng hơn ...


3
Điều này là tiếp tuyến và không theo bất kỳ cách nào liên quan / cụ thể đến con trỏ Arcpy, đó là những gì người đăng đã hỏi về.
Jason Scheirer

2
Tôi xin lỗi nhưng câu hỏi là "Công nghệ nào được sử dụng đằng sau con trỏ Arcpy?" và công nghệ là các con trỏ Python, không phải ArcPy và nếu bạn không biết chúng, bạn không thể hiểu các con trỏ ArcPy: đó là điều tương tự.
gen

8
Công nghệ đằng sau các con trỏ Arcpy là ArcObjects với trình bao bọc Python. Công nghệ đằng sau arcpy.*Cursorlà ánh xạ Python tới các I*Cursorgiao diện của ArcObjects . Sự hiểu biết về mô hình cơ sở dữ liệu địa lý của ArcObjects và ArcGIS hữu ích hơn nhiều so với kiến ​​thức về định nghĩa giao diện con trỏ PEP 249.
Jason Scheirer

1
@JasonScheirer về cơ bản là câu trả lời chính xác cho câu hỏi vì vậy nếu bạn viết một câu trả lời thực sự cho cùng một hiệu ứng, tôi sẽ bỏ phiếu cho nó :)
blah238

1
Đã đăng câu trả lời cho chủ đề được đăng chéo tại forum.arcgis.com/threads/ Kẻ
Jason Scheirer

0

Theo nhận xét của @JasonScheirer:

Công nghệ đằng sau các con trỏ Arcpy là ArcObjects với trình bao bọc Python. Các công nghệ đằng sau arcpy. Con trỏ là một ánh xạ Python tới các giao diện I Coder của ArcObjects . Sự hiểu biết về mô hình cơ sở dữ liệu địa lý của ArcObjects và ArcGIS hữu ích hơn nhiều so với kiến ​​thức về định nghĩa giao diện con trỏ PEP 249.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.