Skip to content
This repository was archived by the owner on Mar 6, 2026. It is now read-only.
This repository was archived by the owner on Mar 6, 2026. It is now read-only.

Percents de-escaping isn't handled when no parameters are used in the dbapi. #608

Description

@jimfulton
>>>importgoogle.cloud.bigquery.dbapi>>>conn=google.cloud.bigquery.dbapi.connect()
/home/jim/p/g/python-bigquery/google/cloud/bigquery/client.py:444: UserWarning: CannotcreateBigQueryStorageclient, thedependencygoogle-cloud-bigquery-storageisnotinstalled.
warnings.warn(
>>>cursor=conn.cursor()
>>>cursor.execute("select 'foo %%', %(x)s", dict(x=1))
>>>cursor.fetchall()
[Row(('foo %', 1), {'f0_': 0, 'f1_': 1})]
>>>cursor.execute("select 'foo %%'", dict(x=1))
>>>cursor.fetchall()
[Row(('foo %',), {'f0_': 0})]
>>>cursor.execute("select 'foo %%'")
>>>cursor.fetchall()
[Row(('foo %%',), {'f0_': 0})]

Bonus:

if people don't escape:

>>> cursor.execute("select 'foo %'")
>>> cursor.fetchall()
[Row(('foo %',), {'f0_': 0})]
>>> cursor.execute("select 'foo %'", dict(x=1))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/jim/p/g/python-bigquery/google/cloud/bigquery/dbapi/_helpers.py", line 273, in with_closed_check
return method(self, *args, **kwargs)
File "/home/jim/p/g/python-bigquery/google/cloud/bigquery/dbapi/cursor.py", line 172, in execute
formatted_operation = _format_operation(operation, parameters=parameters)
File "/home/jim/p/g/python-bigquery/google/cloud/bigquery/dbapi/cursor.py", line 460, in _format_operation
return _format_operation_dict(operation, parameters)
File "/home/jim/p/g/python-bigquery/google/cloud/bigquery/dbapi/cursor.py", line 434, in _format_operation_dict
return operation % formatted_params
ValueError: unsupported format character ''' (0x27) at index 13

Metadata

Metadata

Assignees

Labels

api: bigqueryIssues related to the googleapis/python-bigquery API.dbapipriority: p2Moderately-important priority. Fix may not be included in next release.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions