python-sqlparams icon indicating copy to clipboard operation
python-sqlparams copied to clipboard

Wrong parameters expansion with comments

Open sergey-shambir opened this issue 4 years ago • 0 comments

Parameters expansion for qmark style generates extra parameters when SQL contains comments. There is an example with workaround inside (see strip_comments_from_sql)

import sqlparams
import json

query = sqlparams.SQLParams('named', 'qmark')

sql = """
-- Parameters:
--   :start_date
--   :end_date
SELECT * FROM users WHERE updated_at BETWEEN :start_date AND :end_date
"""

def strip_comments_from_sql(sql: str):
    # Assume you're using '--' for comments
    return '\n'.join([x for x in sql.splitlines() if not x.startswith('--')])

# Workaround
# sql = strip_comments_from_sql(sql)

sql, params = query.format(sql, {'start_date': '2021-01-01', 'end_date': '2021-03-01'})

print(sql)
print(json.dumps(params))

sergey-shambir avatar Oct 21 '21 13:10 sergey-shambir