Hướng dẫn python stored procedure sql server - máy chủ sql thủ tục lưu trữ python

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 stored procedure sql server - máy chủ sql thủ tục lưu trữ python

Gord Thompson

112K30 Huy hiệu vàng200 Huy hiệu bạc395 Huy hiệu Đồng30 gold badges200 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 định dạng cơ sở dữ liệu của bạn nhận ra hoặc sử dụng định dạng Escape Call Call. (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

Phim huy hiệu vàng 18,4K33 gold badges70 silver badges72 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 stored procedure sql server - máy chủ sql thủ tục lưu trữ python

Gord Thompsongord ThompsonGord Thompson

112K30 Huy hiệu vàng200 Huy hiệu bạc395 Huy hiệu Đồng30 gold badges200 silver badges395 bronze badges

1

Đã 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 định dạng cơ sở dữ liệu của bạn nhận ra hoặc sử dụng định dạng Escape Call Call. (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 stored procedure sql server - máy chủ sql thủ tục lưu trữ python

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

Dirndirn3 silver badges6 bronze badges

Phim huy hiệu vàng 18,4K3

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:

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

Hướng dẫn python stored procedure sql server - máy chủ sql thủ tục lưu trữ python

Gord Thompsongord Thompson

 import pyodbc
 import pandas as pd
 import datetime as d


  conn = pyodbc.connect('Driver=;'
                  'Server=;'
                  'Database=;'
                  'UID=;'
                  'PWD=;')


     # define parameters to be passed in and out

     quarter_date = d.date(year=2020, month=10, day=1)

     SQL = r'exec TERRITORIES_SP @quarterStart = ' + "'" + str(quarter_date) + "'"

     print(SQL)

     try:
         cursor = conn.cursor()
          cursor.execute(SQL)
          cursor.close()
          conn.commit()
    finally:
          conn.close()

Đừ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 ''?'', ''?'''

5085 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 thế nào sử dụng thủ tục được lưu trữ trong SQL trong Python?

Các bước để thực hiện thủ tục lưu trữ MySQL trong Python..
Kết nối với MySQL từ Python.....
Nhận đối tượng con trỏ từ kết nối.....
Thực hiện thủ tục được lưu trữ.....
Kết quả tìm nạp.....
Đóng đối tượng đối tượng con trỏ và đối tượng cơ sở dữ liệu ..

Chúng ta có thể viết các thủ tục được lưu trữ trong Python không?

Chọn để tạo một quy trình được lưu trữ với mã nội tuyến hoặc với mã được tải lên từ một giai đoạn.Như trường hợp của Python UDFS, bạn có thể tạo một quy trình được lưu trữ nội tuyến hoặc quy trình được lưu trữ với mã được tải lên từ một giai đoạn.you can either create an in-line stored procedure or a stored procedure with code uploaded from a stage.

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..

Làm thế nào để Python lưu trữ dữ liệu trong SQL Server?

Cách chèn các giá trị vào bảng SQL Server bằng Python..
Bước 1: Cài đặt gói PYODBC.....
Bước 2: Kết nối Python với SQL Server.....
Bước 3: Chèn các giá trị vào bảng SQL Server bằng Python.....
Bước 4: Xác minh kết quả ..