python-sqlparams
python-sqlparams copied to clipboard
Wrong parameters expansion with 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))