2017-02-17 22 views
6

Tôi sử dụng python mỗi ngày với sự nhấn mạnh vào công việc cơ sở dữ liệu.Con trỏ pyodbc Python và con trỏ cơ sở dữ liệu

Sử dụng pyodbc start tiêu chuẩn của tôi là một cái gì đó giống như

connection_hostname = pyodbc.connect('connection_string') 
cursor_hostname = connection_hostname.cursor() 
command_hostname = 'select * from everything_forever;' 
cursor_hostname.execute('command_hostname') 

và nếu tôi cần muốn tái sử dụng con trỏ cho truy vấn khác thay vì tạo ra một con trỏ mới, tôi có thể lưu trữ tập hợp kết quả từ các truy vấn đầu tiên như vậy :

results_from_query = cursor_hostname.fetchall() 

Và tiếp tục sau đó.

Cách tiếp cận này đã hoạt động tốt cho tôi cho đến thời điểm này.

Gần đây, tôi đã thay đổi công việc, và một số đồng nghiệp mới của tôi thường sử dụng GUI để làm việc với sự khởi đầu của DB khi tôi trình diễn kỹ thuật trên. Điều gì đặt chúng ra là từ khóa con trỏ. Tôi hiểu con trỏ là không lớn với DB vì chúng chỉ ra logic không được thiết lập trong lý thuyết tập hợp, có xu hướng đẩy máy chủ thành các mức song song thấp và RBAR, nhưng tôi không tin con trỏ ODBC mà tôi ' m khai báo ở trên giống với con trỏ mà chúng ta nghĩ đến khi chúng ta có mũ quản lý và quản trị SQL Server.

Ai đó có thể giải thích sự khác biệt giữa các con trỏ ODBC này và các con trỏ kiểu SQL Server (giả sử tôi đúng là chúng khác nhau)?

Nếu tôi không chính xác, vui lòng khai sáng cho tôi và cho tôi biết cách tôi có thể giao tiếp hiệu quả hơn với DB của tôi.

Tại sao bạn không thể chỉ thực hiện trực tiếp từ một kết nối như

connection_hostname.execute(command_hostname) 

tôi cảm thấy giống như có cấu trúc con trỏ ODBC như họ đang có cái gì để làm với phép nhiều con trỏ thông qua kết nối cùng để giảm chi phí kết nối và như vậy. Way off cơ sở?

Trả lời

2

Cơ sở dữ liệu Con trỏ được trình bày và không tin cậy bởi DBA, thường là vì lý do chính đáng. Chúng thường là một vấn đề về hiệu suất, và cách tiếp cận dựa trên tập hợp hầu như luôn luôn tốt hơn.

http://www.databasejournal.com/features/mssql/article.php/3896206/What-Every-DBA-Ought-to-Know-About-SQL-Server-Cursors-and-Their-Alternatives.htm ví dụ nói:

"Tại nơi làm việc của tôi, con trỏ bị cấm trong các tiêu chuẩn SQL Server của chúng tôi Để sử dụng một con trỏ, chúng ta phải chứng minh rằng hiệu suất của con trỏ là tốt hơn so với xử lý. Để đơn giản hóa, bạn có thể giải thích cho bạn bè của bạn rằng con trỏ python thực sự là một từ đồng nghĩa với ngôn ngữ khác gọi là recordset hoặc resultset, và các công cụ GUI của họ cũng đang sử dụng con trỏ/recordsets (nhưng không tạo con trỏ trên DB!).

difference between cursor and connection objects

Các vấn đề liên quan