Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Lệnh gọi sql-server được lưu trữ trong Python với tham số bảng có giá trị

Trên cơ sở các nhận xét cho câu hỏi của tôi, tôi đã quản lý để chạy thủ tục được lưu trữ với các tham số có giá trị của bảng (và nhận các giá trị trả về từ SP) Tập lệnh cuối cùng như sau:

import pandas as pd
import pytds
from pytds import login
import sqlalchemy as sa
from sqlalchemy import create_engine
import sqlalchemy_pytds

def connect():
    return pytds.connect(dsn='ServerName',database='DBName',autocommit=True, auth=login.SspiAuth())

engine = sa.create_engine('mssql+pytds://[ServerName]', creator=connect)
conn = engine.raw_connection()

with conn.cursor() as cur:
    arg = [["foo.ExternalInput","bar.ExternalInput"]]
    tvp = pytds.TableValuedParam(type_name="core.MatchColumnTable", rows=arg)
    cur.execute("EXEC test_proc @Target = N'[dbname].[tablename1]', @Source = N'[dbname].[table2]', @CleanTarget = 0, @UseColumnsFromTarget = 0, @MergeOnColumn = %s", (tvp,))
    result = cur.fetchall()
    print(result)

Autocommit được thêm vào kết nối (để thực hiện giao dịch trong con trỏ), tham số có giá trị trong bảng (Marchcolumntable) yêu cầu 2 cột, vì vậy, đối số được sửa đổi để phù hợp với 2 cột.

Các tham số được yêu cầu bên cạnh tvp được bao gồm trong chuỗi thực thi. Tham số cuối cùng trong chuỗi thực thi là tên của tham số tvp (mergeoncolumn) được lấp đầy bởi tvp.

tùy ý, bạn có thể thêm trạng thái kết quả hoặc số hàng như được mô tả trong tài liệu pytds:https://python-tds.readthedocs.io/en/latest/index.html

Lưu ý! :trong thủ tục được lưu trữ, bạn phải đảm bảo rằng BẬT TÀI KHOẢN BẬT được thêm vào, nếu không bạn sẽ không nhận được bất kỳ kết quả nào về Python



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để lấy id được chèn lần cuối?

  2. Cách tốt nhất để viết hoa chữ cái đầu tiên của mỗi từ trong một chuỗi trong SQL Server là gì

  3. Sử dụng DMV (Chế độ xem quản lý động) và DMF (Chức năng quản lý động) | Khắc phục sự cố hiệu suất máy chủ SQL -4

  4. Trả về các tham số của một thủ tục được lưu trữ hoặc hàm do người dùng xác định trong SQL Server (ví dụ T-SQL)

  5. Làm cách nào để liệt kê các phiên bản sẵn có của Máy chủ SQL sử dụng SMO trong C #?