Hướng dẫn python execute procedure sql server - python thực thi thủ tục máy chủ sql

30

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một thủ tục được lưu trữ, mã:

DECLARE @RC int 
DECLARE @id varchar(13) 
DECLARE @pw varchar(13) 
DECLARE @depart varchar(32) 
DECLARE @class varchar(12) 
DECLARE @name varchar(12) 
DECLARE @birthday varchar(10) 
DECLARE @grade int 
DECLARE @subgrade int 
SELECT @id = 'test' 
SELECT @pw = '12345' 
SELECT @depart = 'none' 
SELECT @class = 'GM' 
SELECT @name = 'name' 
SELECT @birthday = 'None' 
SELECT @grade = 3 
SELECT @subgrade = 2 
EXEC @RC = [my_database].[dbo].[my_table] @id, @pw, @depart, @class, @name, @birthday, @grade, @subgrade 
DECLARE @PrnLine nvarchar(4000) 
PRINT 'Stored Procedure: my_database.dbo.my_table' 
SELECT @PrnLine = ' Return Code = ' + CONVERT(nvarchar, @RC)

Làm thế nào tôi có thể tạo một truy vấn SQL thô để tạo tài khoản bằng quy trình này? Tôi đang sử dụng Flask và Pyodbc.

Hướng dẫn python execute procedure sql server - python thực thi thủ tục máy chủ sql

Gord Thompson

Huy hiệu vàng 111K3030 gold badges197 silver badges395 bronze badges

Đã hỏi ngày 20 tháng 2 năm 2015 lúc 18:22Feb 20, 2015 at 18:22

Từ tài liệu PYODBC

Để gọi một quy trình được lưu trữ ngay bây giờ, hãy chuyển cuộc gọi đến phương thức thực thi bằng cách sử dụng định dạng cơ sở dữ liệu của bạn nhận ra hoặc sử dụng định dạng Escape gọi ODBC. (Trình điều khiển ODBC sau đó sẽ định dạng lại cuộc gọi cho bạn để khớp với cơ sở dữ liệu đã cho.)

Đối với SQL Server, bạn sẽ sử dụng một cái gì đó như thế này:

# SQL Server format
cursor.execute("exec sp_dosomething(123, 'abc')")

# ODBC format
cursor.execute("{call sp_dosomething(123, 'abc')}")

Vì vậy, để gọi thủ tục của bạn

id_ = 'test' 
pw = '12345' 
depart = 'none' 
class_ = 'GM' 
name = 'name' 
birthday = 'None' 
grade = 3 
subgrade = 2 

sql = 'exec [my_database].[dbo].[my_table](?, ?, ?, ?, ?, ?, ?, ?)'
values = (id_, pw, depart, class_, name, birthday, grade, subgrade)

cursor.execute(sql, (values))

Đã trả lời ngày 20 tháng 2 năm 2015 lúc 19:00Feb 20, 2015 at 19:00

Dirndirndirn

18.3k3 Huy hiệu vàng69 Huy hiệu bạc71 Huy hiệu đồng3 gold badges69 silver badges71 bronze badges

5

Câu trả lời được chấp nhận không giải quyết vấn đề nắm bắt giá trị trả về từ quy trình được lưu trữ, có thể được thực hiện như thế này:

id_ = 'test' 
pw = '12345' 
depart = 'none' 
class_ = 'GM' 
name = 'name' 
birthday = 'None' 
grade = 3 
subgrade = 2 

sql = """\
SET NOCOUNT ON;
DECLARE @RC int;
EXEC @RC = [my_database].[dbo].[my_sp] ?, ?, ?, ?, ?, ?, ?, ?;
SELECT @RC AS rc;
"""
values = (id_, pw, depart, class_, name, birthday, grade, subgrade)
cursor.execute(sql, values)
rc = cursor.fetchval()  # pyodbc convenience method similar to cursor.fetchone()[0]

Đã trả lời ngày 2 tháng 2 năm 2017 lúc 18:00Feb 2, 2017 at 18:00

Hướng dẫn python execute procedure sql server - python thực thi thủ tục máy chủ sql

Gord Thompsongord ThompsonGord Thompson

Huy hiệu vàng 111K3030 gold badges197 silver badges395 bronze badges

Đã hỏi ngày 20 tháng 2 năm 2015 lúc 18:22

Từ tài liệu PYODBCMar 23, 2018 at 19:39

Eman4realEman4realEman4real

Để gọi một quy trình được lưu trữ ngay bây giờ, hãy chuyển cuộc gọi đến phương thức thực thi bằng cách sử dụng định dạng cơ sở dữ liệu của bạn nhận ra hoặc sử dụng định dạng Escape gọi ODBC. (Trình điều khiển ODBC sau đó sẽ định dạng lại cuộc gọi cho bạn để khớp với cơ sở dữ liệu đã cho.)5 silver badges12 bronze badges

1

Đối với SQL Server, bạn sẽ sử dụng một cái gì đó như thế này:

id_ = 'test' 
pw = '12345' 
depart = 'none' 
class_ = 'GM' 
name = 'name' 
birthday = 'None' 
grade = 3 
subgrade = 2 

sql = """\
DECLARE @RC int;
EXEC [my_database].[dbo].[my_sp] @RC OUTPUT, @id_=?, @pw=?, @depart=?, @class_=?, @name=?, @birthday=?, @grade=?, @subgrade=?;
SELECT @RC AS rc;
"""
values = (id_, pw, depart, class_, name, birthday, grade, subgrade)
cursor.execute(sql, values)
rc = cursor.fetchval()

Vì vậy, để gọi thủ tục của bạnJun 5, 2018 at 9:16

Hướng dẫn python execute procedure sql server - python thực thi thủ tục máy chủ sql

Đã trả lời ngày 20 tháng 2 năm 2015 lúc 19:00Viggos

Dirndirn3 silver badges6 bronze badges

18.3k3 Huy hiệu vàng69 Huy hiệu bạc71 Huy hiệu đồng

sql = " exec your_SP @codemp = ?, @fecha = ? "
prm = (dict['param1'], dict['param2'])
cursor.execute(qry, params)

Câu trả lời được chấp nhận không giải quyết vấn đề nắm bắt giá trị trả về từ quy trình được lưu trữ, có thể được thực hiện như thế này:Jul 30, 2019 at 22:19

Hướng dẫn python execute procedure sql server - python thực thi thủ tục máy chủ sql

Đã trả lời ngày 2 tháng 2 năm 2017 lúc 18:00

Gord Thompsongord Thompson

Đừng quên đặt số Nocount trong thủ tục được lưu trữ của bạn.Nov 3, 2020 at 19:25

3

Đã trả lời ngày 23 tháng 3 năm 2018 lúc 19:39

SQL = 'exec sp_UpdateUserGoogleAuthenticated ''?'', ''?'''

4885 Huy hiệu bạc12 Huy hiệu Đồng

Một hương vị khác của câu trả lời của Gord là sử dụng các tham số đầu ra và được đặt tên (được xác định trong quy trình được lưu trữ) cho rõ ràng.

Đã trả lời ngày 5 tháng 6 năm 2018 lúc 9:164 gold badges27 silver badges52 bronze badges

ViggosviggosFeb 1, 2017 at 23:06

Làm cách nào để chạy một thủ tục SQL trong Python?

Gọi các thủ tục được lưu trữ từ Python..
Kết nối với cơ sở dữ liệu bằng cách tạo đối tượng MySQLConnection mới ..
Khởi tạo một đối tượng mysqlcursor mới từ đối tượng MySQLConnection bằng cách gọi phương thức con trỏ () ..
Gọi phương thức CallProc () của đối tượng MySQLcursor.....
Đóng kết nối con trỏ và cơ sở dữ liệu như mọi khi ..

Làm cách nào để gọi một thủ tục được lưu trữ SQL trong Python?

Để gọi một quy trình được lưu trữ từ ứng dụng Python, hãy sử dụng chức năng IBM_DB.CallProc.Quy trình mà bạn gọi có thể bao gồm các tham số đầu vào (IN), tham số đầu ra (ra) và tham số đầu vào và đầu ra (INOUT).use ibm_db. callproc function. The procedure that you call can include input parameters (IN), output parameters (OUT), and input and output parameters (INOUT).

Làm cách nào để chạy truy vấn SQL Server trong Python?

Các bước để thiết lập tích hợp máy chủ Python SQL bằng PYODBC..
Bước 1: Thiết lập kết nối SQL Server ..
Bước 2: Chạy truy vấn SQL ..
Bước 3: Trích xuất kết quả truy vấn vào Python ..
Bước 4: Áp dụng sửa đổi trong SQL Server ..
Bước 5: Tự động hóa hoạt động của máy chủ SQL Python ..

Python có thể tương tác với SQL Server không?

Bạn có thể kết nối với cơ sở dữ liệu SQL bằng Python trên Windows, Linux hoặc MacOS..