cuốn sách gpt4 ai đã làm

python — Liên kết tham số có được triển khai chính xác trong thư viện pymssql không?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 02:50:41 hai mươi bốn 4
mua khóa gpt4 Nike

Tôi đang sử dụng thư viện pymsqsql để gọi một truy vấn cực kỳ đơn giản từ chương trình Python.

 với self.conn.cursor() làm con trỏ:
con trỏ.execute('select extra_id từ mytable trong đó id = %d', id)
extra_id = con trỏ.fetchone()[0]

Xin lưu ý rằng liên kết tham số (liên kết) được sử dụng như tài liệu pymssql 中所述。 .

Một trong những mục tiêu chính của việc liên kết tham số là cung cấp cho công cụ DBMS khả năng lưu trữ các kế hoạch truy vấn. Tôi sử dụng Profiler để kết nối với MS SQL và kiểm tra xem truy vấn nào đã thực sự được thực thi. Hóa ra mỗi lần có một câu lệnh duy nhất được thực thi (với ID liên kết riêng của nó). Tôi cũng đã kiểm tra cách sử dụng truy vấn cho loại truy vấn này:

chọn * từ sys.dm_exec_cached_plans ec
áp dụng chéo
sys.dm_exec_sql_text(ec.plan_handle) txt
trong đó txt.text như '%select extra_id từ mytable nơi id%'

Nó chỉ ra rằng kế hoạch không được sử dụng lại (điều này tất nhiên là điều được mong đợi vì văn bản cho mỗi truy vấn là duy nhất). Điều này rất khác với liên kết tham số khi truy vấn từ C#, khi chúng ta có thể thấy rằng truy vấn giống nhau nhưng các tham số được cung cấp lại khác nhau.

Vì vậy, tôi muốn biết liệu tôi có đang sử dụng pymssql đúng cách hay không và liệu thư viện này có phù hợp để sử dụng với MS SQL DBMS hay không.

Tái bút Tôi biết MS SQL có tham số hóa tự động cho các truy vấn cơ bản nhưng nó không được đảm bảo và có thể không hoạt động đối với các truy vấn phức tạp.

câu trả lời hay nhất

Bạn đang sử dụng pymssql chính xác. Thật vậy, pymssql thay thế các giá trị tham số bằng văn bản SQL trước khi gửi truy vấn đến máy chủ. Ví dụ:

pymssql:

CHỌN * TỪ tablename WHERE id=1

pyodbc bằng trình điều khiển SQL Server ODBC của Microsoft (không phải trình điều khiển ODBC FreeTDS):

exec sp_prepexec @p1 đầu ra,N'@P1 int',N'SELECT * FROM tablename WHERE id=@P1',1

Tuy nhiên, hãy nhớ rằng pymssql dựa trên FreeTDS và hành vi trên dường như là một chức năng của cách FreeTDS xử lý các truy vấn được tham số hóa chứ không phải pymssql chính nócác chức năng cụ thể. p>

Vâng, như câu trả lời này Như được hiển thị, nó có tác động đến việc tái sử dụng kế hoạch thực hiện (và do đó là hiệu suất). .

Giới thiệu về python - Liên kết tham số có được triển khai chính xác trong thư viện pymssql không? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/43980305/

hai mươi bốn 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress