Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

PLUG IT IN!!!


devel / comp.databases.mysql / Setting SQL Modes

SubjectAuthor
o Setting SQL ModesLawrence D'Oliveiro

1
Setting SQL Modes

<v0728g$18h5n$1@dont-email.me>

  copy mid

https://www.rocksolidbbs.com/devel/article-flat.php?id=128&group=comp.databases.mysql#128

  copy link   Newsgroups: comp.databases.mysql
Path: i2pn2.org!i2pn.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: ldo@nz.invalid (Lawrence D'Oliveiro)
Newsgroups: comp.databases.mysql
Subject: Setting SQL Modes
Date: Tue, 23 Apr 2024 01:18:08 -0000 (UTC)
Organization: A noiseless patient Spider
Lines: 42
Message-ID: <v0728g$18h5n$1@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Injection-Date: Tue, 23 Apr 2024 03:18:08 +0200 (CEST)
Injection-Info: dont-email.me; posting-host="e762e53ec9e8808879f7618c3ddfda81";
logging-data="1328311"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19s0afCka+UELKH+CMyzo0l"
User-Agent: Pan/0.155 (Kherson; fc5a80b8)
Cancel-Lock: sha1:dq8sr4mAXICSZpHn1SPnaPgozgs=
 by: Lawrence D'Oliv - Tue, 23 Apr 2024 01:18 UTC

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 “SELECT”
onto the given string, and returns the result expression.

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor