From Newsgroup: comp.databases.mysql
MySQL/MariaDB has some nonstandard ways of doing things. But it is
possible to make it conform more closely to standard SQL by changing
some mode settings:
set_sql_mode(db, set_modes = {"ANSI_QUOTES", "NO_BACKSLASH_ESCAPES"})
where I define the Python functions for getting and setting the SQL
mode as follows:
def get_sql_mode(conn) :
"returns a set of the currently-enabled SQL_MODE values."
# recognized mode values: <
https://mariadb.com/kb/en/sql-mode/>
return \
set(eval_expr(conn, "@@sql_mode").split(","))
#end get_sql_mode
def set_sql_mode(conn, *, clear_modes = None, set_modes = None) :
"enables/disables specified SQL_MODE values, returning the previous" \
" settings. clear_modes, if not None, is a set/sequence of modes to" \
" be disabled, followed by set_modes, if not None, being a set/sequence" \
" of new modes to be enabled."
old_modes = get_sql_mode(conn)
# always uppercase
new_modes = set(old_modes)
if clear_modes != None :
new_modes.difference_update(c.upper() for c in clear_modes)
#end if
if set_modes != None :
new_modes.update(set_modes)
#end if
conn.cursor().execute \
(
"set sql_mode = %s"
%
sql_string(",".join(new_modes))
)
return \
old_modes
#end set_sql_mode
eval_expr is just a simple function that prepends the word rCLSELECTrCY
onto the given string, and returns the result expression.
--- Synchronet 3.21d-Linux NewsLink 1.2