에서 SQL 주입을 방지합니다. 이 문제를 해결하기 위해, 나는 시도했다 :플라스크-SQLAlchemy의 + pymssql 내가 완벽하게 잘 작동 다음 경로가 저장 프로 시저 PARAMS
query = """
DECLARE @return_value int, @EXIST bit
EXEC @return_value = [dbo].[SP_CHECK_ID] @ID = N':id',
@EXIST = @EXIST OUTPUT
SELECT @EXIST as N'@EXIST'
"""
result = db.session.execute(query, {'id': id}, bind=db.get_engine(app, 'second_db'))
그러나 나는 오류가 있어요 :
sqlalchemy.exc.ProgrammingError: (pymssql.ProgrammingError) (102, b"Incorrect syntax near '179'.DB-Lib error message 20018, severity 15:\nGeneral SQL Server error: Check messages from the SQL Server\n") [SQL: "DECLARE @return_value int, @EXIST bit EXEC @return_value = [dbo].[SP_CHECK_ID] @ID = N'%(id)s', @EXIST = @EXIST OUTPUT SELECT @EXIST as N'@EXIST'"] [parameters: {'id': '179'}]
나는 다른 방법으로 시도했다 :
query = """
DECLARE @return_value int, @EXIST bit
EXEC @return_value = [dbo].[SP_CHECK_ID] @ID = N'%s',
@EXIST = @EXIST OUTPUT
SELECT @EXIST as N'@EXIST'
"""
result = db.session.execute(query, id, bind=db.get_engine(app, 'second_db'))
을하지만 내가 가진 :
AttributeError: 'list' object has no attribute 'keys'
from sqlalchemy.sql import text
query = text(...)
및? % s 대신에 같은 오류가 있습니다.
당신은 주인입니다. 완벽하게 작동했습니다. 고마워. –