如何将参数传递给 SQL 存储过程?
我尝试了很多方法,但都失败了。
这是我最新的尝试。
参数为
BookId
。
这是我的代码:
bookId = 653
connection_string = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=dev;DATABASE=Nemisis"
connection_url = URL.create(
"mssql+pyodbc", query={"odbc_connect": connection_string})
engine = sa.create_engine(connection_url)
qry = text("EXECUTE dbo.LibraryBookData @BookId = " & bookId)
with engine.connect() as con:
rs = con.execute(qry)
df = pd.read_sql_query(qry, engine)
这次尝试时我收到此错误:
Exception has occurred: TypeError
unsupported operand type(s) for &: 'str' and 'int'
我也尝试过这个:
qry = text("EXECUTE dbo.LibraryBookData :BookId")
with engine.connect() as con:
rs = con.execute(qry, BookId = bookId)
这给了我这个错误:
TypeError: Connection.execute() got an unexpected keyword argument 'bookId'
您原来的问题表明您想使用 pandas'
read_sql_query()
将结果检索到 DataFrame 中。在这种情况下,请使用 params=
并将参数值作为字典传递:
book_id = 653
sql = text("""\
SET NOCOUNT ON;
EXEC dbo.LibraryBookData @BookId = :bookId;
""")
df = pd.read_sql_query(sql, engine, params={"bookId": book_id})
请注意,
SET NOCOUNT ON;
并不总是必需的,但使用 mssql 是一个好习惯。