【发布时间】:2021-03-18 21:44:18
【问题描述】:
目前我正在以这种方式执行存储过程:
engine = sqlalchemy.create_engine(self.getSql_conn_url())
query = "exec sp_getVariablesList @City = '{0}', @Station='{1}'".format(City, Station)
self.Variables = pd.read_sql_query(query, engine)
但在How set ARITHABORT ON at sqlalchemy 被正确地注意到这使得它对 SQL 注入开放。我尝试了不同的方法,但没有成功。那么应该如何将参数传递给MSSQL存储过程来消除SQL注入的风险呢?这可以使用 sqlalchemy 或任何其他方式。
【问题讨论】:
-
您尝试过哪些代码,为什么它不适合您? (错误消息?)您是否尝试过阅读pandas.read_sqlquery documentation?您可以通过
params元组传入参数。 -
@AlwaysLearning 我尝试按照docs.sqlalchemy.org/en/13/core/connections.html(调用存储过程)中的说明进行操作并收到错误:'pyodbc.Cursor' 对象没有属性'callproc'
标签: python sql-server python-3.x sqlalchemy sql-injection