から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の代わりに同じエラーがあります。
あなたはマスターであり、完璧に機能しました。どうもありがとう。 –