Op 13/12/2022 om 1:41 schreef John K. Parejko:
Asking here before I file an improvement request issue on the python GitHub:
sqlite has a known misfeature with double-quoted strings, whereby they will be
interpreted as string literals if they don’t match a valid identifier [1]. The
note in the sqlite docs describe a way to disable this misfeature at compile
time or by calling an `sqlite3_db_config` C-function, but I don’t see any way
to do that in the python sqlite library [2].
Am I missing a way to manage this setting, or is it not available within
python? This would be very useful to enable, so that python’s sqlite library
will treat queries more like standard sql, instead of this particular version
of MySQL. I was just burned by this, where some tests I’d written against an
sqlite database did not fail in the way that they “should” have, because of
this double-quoted string issue.
It doesn’t look like `sqlite3_db_config` is used within the python sqlite3
codebase at all, so this might not be a trivial change? I only see two
references to it in the cpython github.
Like Lars Liedtke this is not an exact answer to your question, but you
can side-step the issue by using parametrized queries, i.e. instead of
cur.execute('SELECT name, location FROM persons WHERE name = "John
Doe"')
do
cur.execute('SELECT name, location FROM persons WHERE name = ?',
('John Doe',))
--
"Life ain't no fairy tale
Just give me another ale
And I'll drink to Rock 'n Roll"
-- Barkeep (The Scabs)
--
https://mail.python.org/mailman/listinfo/python-list