The chain of tools, that to make work with SQL easier
Project description
The chain of tools that make work with SQL procedures easier.
Syntax
#include “<filename>” - include the specified filename, the absolute and relative urls supported.
#define name <value> - specify the value, that can be used as $name
#define name(arg1, …, argN) - the function, that can be used as $name(a1,…aN)
#undef name - undefine previously defined instruction
#if condition expression else alternative - conditional expressions
SELECT … ; – > array - hint, that informs about query returns more that one element
SELECT … ; – > object - hint, that informs about query returns exactly one element
COMMENT “returns union” - hint, to merge all objects from results sets to one
COMMENT “<table name> (<colum name column type>,…);” - hint, that allow to pass the list of arguments to procedure via temporary table
wsql-trans:
The extensions above native SQL.
supports:
macros
#define table_name "mytable"
select * from $table_name;
macro-functions
#define quote(a) "a"
select upper(quote(a));
conditions
#define a 1
#if a == 1
select * from t1;
#else
select * from t2;
#endif
includes
#include "common.sql"
wsql-codegen:
Generate the native code to work with SQL procedures. Now supports python3 native and aio. The C++ under development. Required WSQL.
Hints
SELECT … ; – > array - hint, that informs about query returns more that one element
SELECT … ; – > object - hint, that informs about query returns exactly one element
COMMENT “returns union” - hint, to merge all objects from results sets to one
COMMENT “<table name> (<colum name column type>,…);” - hint, that allow to pass the list of arguments to procedure via temporary table
SQL
CREATE PROCEDURE table1.insert (value VARCHAR(10))
BEGIN
INSERT INTO table1 (value) VALUES(value);
SELECT LAST_INSERT_ID() AS id;
END
Python3
@coroutine
def insert(connection, value=None):
"""
insert, table1
:param value: the value(VARCHAR(10), IN))
:return (id,)
"""
@coroutine
def __query(__connection):
__cursor = __connection.cursor()
try:
yield from __cursor.callproc(b"procedure4", (value,))
return (yield from __cursor.fetchall())[0]
finally:
yield from __cursor.close()
try:
return (yield from connection.execute(__query))
except Error as e:
raise handle_error(exceptions, e)