$title 'Test Connect agent SQLReader' ( CASQLR,SEQ=909)
$if not setEnv GMSPYTHONLIB $abort.noError Embedded code Python not ready to be used
$log --- Using Python library %sysEnv.GMSPYTHONLIB%
$onEmbeddedCode Python :
import string, os
from random import choices
schemaName = '' . join( choices( string. ascii_lowercase, k= 10 ) )
os. environ[ 'CONNECTSQLSCHEMASUFFIX' ] = schemaName
os. environ[ 'CONNECTSQLTABLEPREFIX' ] = schemaName + '.'
$offEmbeddedCode
$onEcho> sqlitescript.sql
CREATE TABLE scalarTable
(
value_col INTEGER PRIMARY KEY
) ;
INSERT INTO scalarTable( value_col) VALUES( 653) ;
CREATE TABLE parameterTable
(
label TEXT,
value_col1 DOUBLE PRECISION,
value_col2 DOUBLE PRECISION
) ;
INSERT INTO parameterTable ( label, value_col1, value_col2) VALUES( 'i3' , 0. 453, 0. 532) ;
INSERT INTO parameterTable ( label, value_col1, value_col2) VALUES( 'i2' , 0. 638, 0. 478) ;
INSERT INTO parameterTable ( label, value_col1, value_col2) VALUES( 'i1' , 0. 987, 0. 804) ;
CREATE TABLE deciTable
(
label TEXT,
value_col1 DOUBLE PRECISION
) ;
INSERT INTO deciTable ( label, value_col1) VALUES( 'i3' , 121. 12) ;
INSERT INTO deciTable ( label, value_col1) VALUES( 'i2' , 122. 22) ;
INSERT INTO deciTable ( label, value_col1) VALUES( 'i1' , 123. 32) ;
CREATE TABLE setTable
(
id INTEGER PRIMARY KEY,
label1 TEXT,
label2 TEXT,
expText1 TEXT,
expText2 TEXT
) ;
INSERT INTO setTable ( id, label1, label2, expText1, expText2) VALUES( 1, 'i1' , 'j1' , 'Text1' , 'RandomText1' ) ;
INSERT INTO setTable ( id, label1, label2, expText1, expText2) VALUES( 2, 'i1' , 'j2' , 'Text2' , 'RandomText2' ) ;
INSERT INTO setTable ( id, label1, label2, expText1, expText2) VALUES( 3, 'i1' , 'j3' , 'Text3' , 'RandomText3' ) ;
INSERT INTO setTable ( id, label1, label2, expText1, expText2) VALUES( 4, 'i2' , 'j1' , NULL, 'RandomText4' ) ;
INSERT INTO setTable ( id, label1, label2, expText1, expText2) VALUES( 5, 'i2' , 'j2' , 'Text5' , 'RandomText5' ) ;
INSERT INTO setTable ( id, label1, label2, expText1, expText2) VALUES( 6, 'i2' , 'j3' , NULL, 'RandomText6' ) ;
CREATE TABLE distanceTableOne
(
id INTEGER PRIMARY KEY,
source TEXT,
newyork DOUBLE PRECISION,
chicago DOUBLE PRECISION,
topeka DOUBLE PRECISION
) ;
INSERT INTO distanceTableOne ( id, source, newyork, chicago, topeka) VALUES( 1, 'seattle' , 2. 5, 1. 7, 1. 8) ;
INSERT INTO distanceTableOne ( id, source, newyork, chicago, topeka) VALUES( 2, 'san-diego' , 2. 5, 1. 8, 1. 4) ;
CREATE TABLE distanceTableTwo
(
id INTEGER PRIMARY KEY,
i_place TEXT,
j_place TEXT,
miles DOUBLE PRECISION
) ;
INSERT INTO distanceTableTwo ( id, i_place, j_place, miles) VALUES( 1, 'seattle' ,'new-york' , 2. 5) ;
INSERT INTO distanceTableTwo ( id, i_place, j_place, miles) VALUES( 2, 'seattle' ,'chicago' , 1. 7) ;
INSERT INTO distanceTableTwo ( id, i_place, j_place, miles) VALUES( 3, 'seattle' ,'topeka' , 1. 8) ;
INSERT INTO distanceTableTwo ( id, i_place, j_place, miles) VALUES( 4, 'san-diego' ,'new-york' , 2. 5) ;
INSERT INTO distanceTableTwo ( id, i_place, j_place, miles) VALUES( 5, 'san-diego' ,'chicago' , 1. 8) ;
INSERT INTO distanceTableTwo ( id, i_place, j_place, miles) VALUES( 6, 'san-diego' , 'topeka' , 1. 4) ;
CREATE TABLE notSortedTableOne
(
id INTEGER PRIMARY KEY,
i TEXT,
j TEXT,
value DOUBLE PRECISION
) ;
INSERT INTO notSortedTableOne ( id, i, j, value) VALUES( 1, 'i1' ,'j2' , 1. 0) ;
INSERT INTO notSortedTableOne ( id, i, j, value) VALUES( 2, 'i1' ,'j1' , 2. 0) ;
INSERT INTO notSortedTableOne ( id, i, j, value) VALUES( 3, 'i2' ,'j1' , 4. 0) ;
INSERT INTO notSortedTableOne ( id, i, j, value) VALUES( 4, 'i2' ,'j2' , 3. 0) ;
CREATE TABLE notSortedTableTwo
(
i TEXT,
j TEXT,
k1 DOUBLE PRECISION,
k2 DOUBLE PRECISION
) ;
INSERT INTO notSortedTableTwo ( i, j, k1, k2) VALUES( 'i1' , 'j2' , NULL, 1. 0) ;
INSERT INTO notSortedTableTwo ( i, j, k1, k2) VALUES( 'i1' , 'j1' , 2. 0, 3. 0) ;
INSERT INTO notSortedTableTwo ( i, j, k1, k2) VALUES( 'i2' , 'j1' , 6. 0, NULL) ;
INSERT INTO notSortedTableTwo ( i, j, k1, k2) VALUES( 'i2' , 'j2' , 4. 0, 5. 0) ;
$offEcho
$onEcho > testScript.sql
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%scalarTable
(
value_col INTEGER PRIMARY KEY
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%scalarTable( value_col) VALUES( 653) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%parameterTable
(
label TEXT,
value_col1 DOUBLE PRECISION,
value_col2 DOUBLE PRECISION
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%parameterTable ( label, value_col1, value_col2) VALUES( 'i3' , 0. 453, 0. 532) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%parameterTable ( label, value_col1, value_col2) VALUES( 'i2' , 0. 638, 0. 478) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%parameterTable ( label, value_col1, value_col2) VALUES( 'i1' , 0. 987, 0. 804) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%deciTable
(
label TEXT,
value_col1 DOUBLE PRECISION
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%deciTable ( label, value_col1) VALUES( 'i3' , 121. 12) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%deciTable ( label, value_col1) VALUES( 'i2' , 122. 22) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%deciTable ( label, value_col1) VALUES( 'i1' , 123. 32) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%setTable
(
id INTEGER PRIMARY KEY,
label1 TEXT,
label2 TEXT,
expText1 TEXT,
expText2 TEXT
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%setTable ( id, label1, label2, expText1, expText2) VALUES( 1, 'i1' , 'j1' , 'Text1' , 'RandomText1' ) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%setTable ( id, label1, label2, expText1, expText2) VALUES( 2, 'i1' , 'j2' , 'Text2' , 'RandomText2' ) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%setTable ( id, label1, label2, expText1, expText2) VALUES( 3, 'i1' , 'j3' , 'Text3' , 'RandomText3' ) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%setTable ( id, label1, label2, expText1, expText2) VALUES( 4, 'i2' , 'j1' , NULL, 'RandomText4' ) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%setTable ( id, label1, label2, expText1, expText2) VALUES( 5, 'i2' , 'j2' , 'Text5' , 'RandomText5' ) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%setTable ( id, label1, label2, expText1, expText2) VALUES( 6, 'i2' , 'j3' , NULL, 'RandomText6' ) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%distanceTableOne
(
id INTEGER PRIMARY KEY,
source TEXT,
newyork DOUBLE PRECISION,
chicago DOUBLE PRECISION,
topeka DOUBLE PRECISION
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableOne ( id, source, newyork, chicago, topeka) VALUES( 1, 'seattle' , 2. 5, 1. 7, 1. 8) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableOne ( id, source, newyork, chicago, topeka) VALUES( 2, 'san-diego' , 2. 5, 1. 8, 1. 4) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%distanceTableTwo
(
id INTEGER PRIMARY KEY,
i_place TEXT,
j_place TEXT,
miles DOUBLE PRECISION
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableTwo ( id, i_place, j_place, miles) VALUES( 1, 'seattle' ,'new-york' , 2. 5) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableTwo ( id, i_place, j_place, miles) VALUES( 2, 'seattle' ,'chicago' , 1. 7) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableTwo ( id, i_place, j_place, miles) VALUES( 3, 'seattle' ,'topeka' , 1. 8) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableTwo ( id, i_place, j_place, miles) VALUES( 4, 'san-diego' ,'new-york' , 2. 5) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableTwo ( id, i_place, j_place, miles) VALUES( 5, 'san-diego' ,'chicago' , 1. 8) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%distanceTableTwo ( id, i_place, j_place, miles) VALUES( 6, 'san-diego' , 'topeka' , 1. 4) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%notSortedTableOne
(
id INTEGER PRIMARY KEY,
i TEXT,
j TEXT,
value DOUBLE PRECISION
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableOne ( id, i, j, value) VALUES( 1, 'i1' ,'j2' , 1. 0) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableOne ( id, i, j, value) VALUES( 2, 'i1' ,'j1' , 2. 0) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableOne ( id, i, j, value) VALUES( 3, 'i2' ,'j1' , 4. 0) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableOne ( id, i, j, value) VALUES( 4, 'i2' ,'j2' , 3. 0) ;
CREATE TABLE %sysEnv.CONNECTSQLTABLEPREFIX%notSortedTableTwo
(
i TEXT,
j TEXT,
k1 DOUBLE PRECISION,
k2 DOUBLE PRECISION
) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableTwo ( i, j, k1, k2) VALUES( 'i1' , 'j2' , NULL, 1. 0) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableTwo ( i, j, k1, k2) VALUES( 'i1' , 'j1' , 2. 0, 3. 0) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableTwo ( i, j, k1, k2) VALUES( 'i2' , 'j1' , 6. 0, NULL) ;
INSERT INTO %sysEnv. CONNECTSQLTABLEPREFIX%notSortedTableTwo ( i, j, k1, k2) VALUES( 'i2' , 'j2' , 4. 0, 5. 0) ;
$offEcho
$onEcho > SQLServerScript.sql
CREATE TABLE dbo.scalarTable
(
value_col INTEGER PRIMARY KEY
) ;
INSERT INTO dbo. scalarTable( value_col) VALUES( 653) ;
CREATE TABLE dbo.parameterTable
(
label TEXT,
value_col1 DOUBLE PRECISION,
value_col2 DOUBLE PRECISION
) ;
INSERT INTO dbo. parameterTable VALUES( 'i3' , 0. 453, 0. 532) ;
INSERT INTO dbo. parameterTable VALUES( 'i2' , 0. 638, 0. 478) ;
INSERT INTO dbo. parameterTable VALUES( 'i1' , 0. 987, 0. 804) ;
CREATE TABLE dbo.deciTable
(
label TEXT,
value_col1 DOUBLE PRECISION
) ;
INSERT INTO dbo. deciTable ( label, value_col1) VALUES( 'i3' , 121. 12) ;
INSERT INTO dbo. deciTable ( label, value_col1) VALUES( 'i2' , 122. 22) ;
INSERT INTO dbo. deciTable ( label, value_col1) VALUES( 'i1' , 123. 32) ;
CREATE TABLE dbo.setTable
(
id INTEGER PRIMARY KEY,
label1 TEXT,
label2 TEXT,
expText1 TEXT,
expText2 TEXT
) ;
INSERT INTO dbo. setTable VALUES( 1, 'i1' , 'j1' , 'Text1' , 'RandomText1' ) ;
INSERT INTO dbo. setTable VALUES( 2, 'i1' , 'j2' , 'Text2' , 'RandomText2' ) ;
INSERT INTO dbo. setTable VALUES( 3, 'i1' , 'j3' , 'Text3' , 'RandomText3' ) ;
INSERT INTO dbo. setTable VALUES( 4, 'i2' , 'j1' , NULL, 'RandomText4' ) ;
INSERT INTO dbo. setTable VALUES( 5, 'i2' , 'j2' , 'Text5' , 'RandomText5' ) ;
INSERT INTO dbo. setTable VALUES( 6, 'i2' , 'j3' , NULL, 'RandomText6' ) ;
CREATE TABLE dbo.distanceTableOne
(
id INTEGER PRIMARY KEY,
source TEXT,
newyork DOUBLE PRECISION,
chicago DOUBLE PRECISION,
topeka DOUBLE PRECISION
) ;
INSERT INTO dbo. distanceTableOne VALUES( 1, 'seattle' , 2. 5, 1. 7, 1. 8) ;
INSERT INTO dbo. distanceTableOne VALUES( 2, 'san-diego' , 2. 5, 1. 8, 1. 4) ;
CREATE TABLE dbo.distanceTableTwo
(
id INTEGER PRIMARY KEY,
i_place TEXT,
j_place TEXT,
miles DOUBLE PRECISION
) ;
INSERT INTO dbo. distanceTableTwo VALUES( 1, 'seattle' ,'new-york' , 2. 5) ;
INSERT INTO dbo. distanceTableTwo VALUES( 2, 'seattle' ,'chicago' , 1. 7) ;
INSERT INTO dbo. distanceTableTwo VALUES( 3, 'seattle' ,'topeka' , 1. 8) ;
INSERT INTO dbo. distanceTableTwo VALUES( 4, 'san-diego' ,'new-york' , 2. 5) ;
INSERT INTO dbo. distanceTableTwo VALUES( 5, 'san-diego' ,'chicago' , 1. 8) ;
INSERT INTO dbo. distanceTableTwo VALUES( 6, 'san-diego' , 'topeka' , 1. 4) ;
CREATE TABLE dbo.notSortedTableOne
(
id INTEGER PRIMARY KEY,
i TEXT,
j TEXT,
value DOUBLE PRECISION
) ;
INSERT INTO dbo. notSortedTableOne VALUES( 1, 'i1' ,'j2' , 1. 0) ;
INSERT INTO dbo. notSortedTableOne VALUES( 2, 'i1' ,'j1' , 2. 0) ;
INSERT INTO dbo. notSortedTableOne VALUES( 3, 'i2' ,'j1' , 4. 0) ;
INSERT INTO dbo. notSortedTableOne VALUES( 4, 'i2' ,'j2' , 3. 0) ;
CREATE TABLE dbo.notSortedTableTwo
(
i TEXT,
j TEXT,
k1 DOUBLE PRECISION,
k2 DOUBLE PRECISION
) ;
INSERT INTO dbo. notSortedTableTwo ( i, j, k1, k2) VALUES( 'i1' , 'j2' , NULL, 1. 0) ;
INSERT INTO dbo. notSortedTableTwo ( i, j, k1, k2) VALUES( 'i1' , 'j1' , 2. 0, 3. 0) ;
INSERT INTO dbo. notSortedTableTwo ( i, j, k1, k2) VALUES( 'i2' , 'j1' , 6. 0, NULL) ;
INSERT INTO dbo. notSortedTableTwo ( i, j, k1, k2) VALUES( 'i2' , 'j2' , 4. 0, 5. 0) ;
$offEcho
$onEmbeddedCode Python :
import sqlite3, psycopg2, pymysql, pymssql
import os
with psycopg2. connect( ** { 'user' : 'postgres' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 22000 , 'host' : 'internal2.gams.com' , 'database' : 'testdb' } ) as conn:
cur = conn. cursor( )
cur. execute( f"CREATE SCHEMA {schemaName};" )
conn. commit( )
cur. close( )
with pymysql. connect( ** { 'user' : 'root' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 21000 , 'host' : 'internal2.gams.com' , 'database' : 'testdb' } ) as conn:
cur = conn. cursor( )
cur. execute( f"CREATE SCHEMA {schemaName};" )
conn. commit( )
cur. close( )
with pymssql. connect( ** { 'user' : 'sa' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 23000 , 'host' : 'internal2.gams.com' } , autocommit= True ) as conn:
cur = conn. cursor( )
cur. execute( f"CREATE DATABASE {schemaName};" )
conn. commit( )
cur. close( )
with sqlite3. connect( ** { 'database' : f'{schemaName}.db' } ) as conn:
with open( 'sqlitescript.sql' , 'r' ) as sql_file:
sql_script = sql_file. read( )
cur = conn. cursor( )
cur. executescript( sql_script)
conn. commit( )
cur. close( )
with open( 'testScript.sql' , 'r' ) as sql_file:
sql_script = sql_file. read( )
sql_script_stripped = sql_script. split( ";" )
sql_script_stripped. pop( )
with psycopg2. connect( ** { 'user' : 'postgres' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 22000 , 'host' : 'internal2.gams.com' , 'database' : 'testdb' } ) as conn:
cur = conn. cursor( )
cur. execute( sql_script)
conn. commit( )
cur. close( )
with pymysql. connect( ** { 'user' : 'root' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 21000 , 'host' : 'internal2.gams.com' , 'database' : 'testdb' } ) as conn:
cur = conn. cursor( )
for ele in sql_script_stripped:
cur. execute( ele+ ";" )
conn. commit( )
cur. close( )
with open( 'SQLServerScript.sql' , 'r' ) as sql_file:
sql_script = sql_file. read( )
with pymssql. connect( ** { 'user' : 'sa' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 23000 , 'host' : 'internal2.gams.com' , 'database' : schemaName} ) as conn:
cur = conn. cursor( )
cur. execute( sql_script)
conn. commit( )
cur. close( )
$offEmbeddedCode
$onEchoV > readTest.gms
$log %CONNECTIONTYPE% test connection dictionary missing
$onEmbeddedCode Connect :
- SQLReader:
symbols:
- name: scalarTable
query: "SELECT * FROM %TABLEPREFIX%scalarTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log %CONNECTIONTYPE% test name missing
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- query: "SELECT * FROM %TABLEPREFIX%scalarTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log %CONNECTIONTYPE% test SQL query missing
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: scalarTable
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log %CONNECTIONTYPE% test type option "set" missing
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: setTable
query: "SELECT * FROM %TABLEPREFIX%setTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log %CONNECTIONTYPE% reading scalar
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: scalarTable
query: "SELECT * FROM %TABLEPREFIX%scalarTable;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "scalarTable" ] . records. values. tolist( )
expected = [ [ 653.0 ] ]
if data != expected:
raise Exception( "Unexpected data scalarTable." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading parameter
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: parameterTable
query: "SELECT label, value_col1 FROM %TABLEPREFIX%parameterTable;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "parameterTable" ] . records. values. tolist( )
expected = [ [ 'i3' , 0.453 ] ,
[ 'i2' , 0.638 ] ,
[ 'i1' , 0.987 ] ]
if data != expected:
raise Exception( "Unexpected data parameterTable." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading parameter with dTypeMap
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: deciTable
query: "SELECT label, value_col1 FROM %TABLEPREFIX%deciTable;"
dTypeMap: { 'value_col1' : 'int64' }
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "deciTable" ] . records. values. tolist( )
expected = [ [ 'i3' , 121 ] ,
[ 'i2' , 122 ] ,
[ 'i1' , 123 ] ]
if data != expected:
raise Exception( "Unexpected data deciTable." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading set with SQLAlchemy
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICTSQLALCHEMY%
connectionType: sqlalchemy
symbols:
- name: setTable
query: "SELECT label1, label2, expText1 FROM %TABLEPREFIX%setTable;"
type: set
valueColumns: "lastCol"
valueSubstitutions: { . NaN: "" }
- PythonCode:
code: |
data = connect. container. data[ "setTable" ] . records. values. tolist( )
expected = [ [ 'i1' , 'j1' , 'Text1' ] ,
[ 'i1' , 'j2' , 'Text2' ] ,
[ 'i1' , 'j3' , 'Text3' ] ,
[ 'i2' , 'j1' , '' ] ,
[ 'i2' , 'j2' , 'Text5' ] ,
[ 'i2' , 'j3' , '' ] ]
if data != expected:
raise Exception( "Unexpected data setTable." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading set without explanatoryText
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: setTable
query: "SELECT * FROM %TABLEPREFIX%setTable;"
type: set
valueColumns: none
- PythonCode:
code: |
data = connect. container. data[ "setTable" ] . records. values. tolist( )
expected = [ [ '1' , 'i1' , 'j1' , 'Text1' , 'RandomText1' , '' ] ,
[ '2' , 'i1' , 'j2' , 'Text2' , 'RandomText2' , '' ] ,
[ '3' , 'i1' , 'j3' , 'Text3' , 'RandomText3' , '' ] ,
[ '5' , 'i2' , 'j2' , 'Text5' , 'RandomText5' , '' ] ]
if data != expected:
raise Exception( "Unexpected data setTable." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading set without explanatoryText and substituting NULL values with Empty string
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: setTable
query: "SELECT * FROM %TABLEPREFIX%setTable;"
type: set
valueColumns: none
indexSubstitutions: { . NaN: "" }
- PythonCode:
code: |
data = connect. container. data[ "setTable" ] . records. values. tolist( )
expected = [ [ '1' , 'i1' , 'j1' , 'Text1' , 'RandomText1' , '' ] ,
[ '2' , 'i1' , 'j2' , 'Text2' , 'RandomText2' , '' ] ,
[ '3' , 'i1' , 'j3' , 'Text3' , 'RandomText3' , '' ] ,
[ '4' , 'i2' , 'j1' , '' , 'RandomText4' , '' ] ,
[ '5' , 'i2' , 'j2' , 'Text5' , 'RandomText5' , '' ] ,
[ '6' , 'i2' , 'j3' , '' , 'RandomText6' , '' ] , ]
if data != expected:
raise Exception( "Unexpected data setTable." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading 1-dim parameter from 2-dim data with SELECT query
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: distanceTableOne
query: "SELECT source, newyork FROM %TABLEPREFIX%distanceTableOne;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "distanceTableOne" ] . records. values. tolist( )
expected = [ [ 'seattle' , 2.5 ] ,
[ 'san-diego' , 2.5 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableOne." )
$offEmbeddedCode
$log %CONNECTIONTYPE% Substituting multi-level indices through local indexSubstitutions
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: distanceTableOne_indexSub
query: "SELECT * FROM distanceTableOne;"
valueColumns: [ "newyork" , "chicago" , "topeka" ]
indexSubstitutions: { 'san-diego' : 'detroit' , 'newyork' : 'miami' }
- PythonCode:
code: |
data = connect. container. data[ "distanceTableOne_indexSub" ] . records. values. tolist( )
expected = [ [ '1' , 'seattle' , 'miami' , 2.5 ] ,
[ '1' , 'seattle' , 'chicago' , 1.7 ] ,
[ '1' , 'seattle' , 'topeka' , 1.8 ] ,
[ '2' , 'detroit' , 'miami' , 2.5 ] ,
[ '2' , 'detroit' , 'chicago' , 1.8 ] ,
[ '2' , 'detroit' , 'topeka' , 1.4 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableOne_indexSub." )
$offEmbeddedCode
$log %CONNECTIONTYPE% Substituting indices through global indexSubstitutions
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
indexSubstitutions: { 'san-diego' : 'detroit' , 'newyork' : 'miami' , 'i2' : 'i3' , . NaN: '' }
symbols:
- name: distanceTableOne_indexSub
query: "SELECT * FROM distanceTableOne;"
valueColumns: [ "newyork" , "chicago" , "topeka" ]
- name: setTable_indexSub
query: "SELECT * FROM setTable;"
type: set
valueColumns: none
- PythonCode:
code: |
data1 = connect. container. data[ "distanceTableOne_indexSub" ] . records. values. tolist( )
expected1 = [ [ '1' , 'seattle' , 'miami' , 2.5 ] ,
[ '1' , 'seattle' , 'chicago' , 1.7 ] ,
[ '1' , 'seattle' , 'topeka' , 1.8 ] ,
[ '2' , 'detroit' , 'miami' , 2.5 ] ,
[ '2' , 'detroit' , 'chicago' , 1.8 ] ,
[ '2' , 'detroit' , 'topeka' , 1.4 ] ]
if data1 != expected1:
raise Exception( "Unexpected data distanceTableOne_indexSub." )
data2 = connect. container. data[ "setTable_indexSub" ] . records. values. tolist( )
expected2 = [ [ '1' , 'i1' , 'j1' , 'Text1' , 'RandomText1' , '' ] ,
[ '2' , 'i1' , 'j2' , 'Text2' , 'RandomText2' , '' ] ,
[ '3' , 'i1' , 'j3' , 'Text3' , 'RandomText3' , '' ] ,
[ '4' , 'i3' , 'j1' , '' , 'RandomText4' , '' ] ,
[ '5' , 'i3' , 'j2' , 'Text5' , 'RandomText5' , '' ] ,
[ '6' , 'i3' , 'j3' , '' , 'RandomText6' , '' ] ]
if data2 != expected2:
raise Exception( "Unexpected data setTable_indexSub." )
$offEmbeddedCode
$log %CONNECTIONTYPE% Substituting values through global valueSubstitutions
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
valueSubstitutions: { 653 : 700 , 122.22 : 400 }
symbols:
- name: scalarTable_valueSub
query: "SELECT * FROM scalarTable;"
- name: deciTable_valueSub
query: "SELECT label, value_col1 FROM deciTable;"
- PythonCode:
code: |
data1 = connect. container. data[ "scalarTable_valueSub" ] . records. values. tolist( )
expected1 = [ [ 700.0 ] ]
if data1 != expected1:
raise Exception( "Unexpected data scalarTable_valueSub." )
data2 = connect. container. data[ "deciTable_valueSub" ] . records. values. tolist( )
expected2 = [ [ 'i3' , 121.12 ] , [ 'i2' , 400.0 ] , [ 'i1' , 123.32 ] ]
if data2 != expected2:
raise Exception( "Unexpected data deciTable_valueSub." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading scalar from 2-dim data with SELECT query
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: distanceTableOne
query: "SELECT newyork FROM %TABLEPREFIX%distanceTableOne WHERE distanceTableOne.source LIKE 'seattle';"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "distanceTableOne" ] . records. values. tolist( )
expected = [ [ 2.5 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableOne." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading 2-dim parameter from 2-dim data
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: distanceTableTwo
query: "SELECT i_place, j_place, miles FROM %TABLEPREFIX%distanceTableTwo;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "distanceTableTwo" ] . records. values. tolist( )
expected = [ [ 'seattle' , 'new-york' , 2.5 ] ,
[ 'seattle' , 'chicago' , 1.7 ] ,
[ 'seattle' , 'topeka' , 1.8 ] ,
[ 'san-diego' , 'new-york' , 2.5 ] ,
[ 'san-diego' , 'chicago' , 1.8 ] ,
[ 'san-diego' , 'topeka' , 1.4 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableTwo." )
$offEmbeddedCode
$log test SQLReader create categorical but never sort and SQLWriter always sort
$log %CONNECTIONTYPE% reading 2-dim parameter from 2-dim data
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: notSortedTableOne
query: "SELECT i, j, value FROM %TABLEPREFIX%notSortedTableOne;"
valueColumns: "lastCol"
- PythonCode:
code: |
sym = connect. container. data[ "notSortedTableOne" ]
data_sorted = sym. records. sort_values( sym. records. columns[ : - 1 ] . tolist( ) ) . values. tolist( )
expected = [ [ 'i1' , 'j2' , 1.0 ] ,
[ 'i1' , 'j1' , 2.0 ] ,
[ 'i2' , 'j2' , 3.0 ] ,
[ 'i2' , 'j1' , 4.0 ] ]
if data_sorted != expected:
raise Exception( "Unexpected sorted data notSortedTableOne." )
sym. reorderUELs( uels= [ 'j1' , 'j2' ] , dimensions= 1 )
- SQLWriter:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
schemaName: % SCHEMASUFFIX%
symbols:
- name: notSortedTableOne
tableName: SortedTableOne
ifExists: "replace"
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: SortedTableOne
query: "SELECT * FROM %TABLEPREFIX%SortedTableOne;"
valueColumns: "lastCol"
- PythonCode:
code: |
sym = connect. container. data[ "SortedTableOne" ]
data_sorted = sym. records. sort_values( sym. records. columns[ : - 1 ] . tolist( ) ) . values. tolist( )
expected = [ [ 'i1' , 'j1' , 2.0 ] ,
[ 'i1' , 'j2' , 1.0 ] ,
[ 'i2' , 'j1' , 4.0 ] ,
[ 'i2' , 'j2' , 3.0 ] ]
if data_sorted != expected:
raise Exception( "Unexpected sorted data SortedTableOne." )
$offEmbeddedCode
$log %CONNECTIONTYPE% reading 3-dim parameter from 3-dim data
$onEmbeddedCode Connect :
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: notSortedTableTwo
query: "SELECT i, j, k1, k2 FROM %TABLEPREFIX%notSortedTableTwo;"
valueColumns: [ "k1" , "k2" ]
- PythonCode:
code: |
sym = connect. container. data[ "notSortedTableTwo" ]
data_sorted = sym. records. sort_values( sym. records. columns[ : - 1 ] . tolist( ) ) . values. tolist( )
expected = [ [ 'i1' , 'j2' , 'k2' , 1.0 ] ,
[ 'i1' , 'j1' , 'k1' , 2.0 ] ,
[ 'i1' , 'j1' , 'k2' , 3.0 ] ,
[ 'i2' , 'j2' , 'k1' , 4.0 ] ,
[ 'i2' , 'j2' , 'k2' , 5.0 ] ,
[ 'i2' , 'j1' , 'k1' , 6.0 ] ]
if data_sorted != expected:
raise Exception( "Unexpected sorted data notSortedTableTwo." )
sym. reorderUELs( uels= [ 'i2' , 'i1' ] , dimensions= 0 )
sym. reorderUELs( uels= [ 'j1' , 'j2' ] , dimensions= 1 )
sym. reorderUELs( uels= [ 'k2' , 'k1' ] , dimensions= 2 )
- SQLWriter:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
schemaName: % SCHEMASUFFIX%
symbols:
- name: notSortedTableTwo
tableName: SortedTableTwo
ifExists: "replace"
unstack: True
- SQLReader:
connection: % CONNECTIONDICT%
connectionType: % CONNECTIONTYPE%
symbols:
- name: SortedTableTwo
query: "SELECT * FROM %TABLEPREFIX%SortedTableTwo;"
valueColumns: [ "k1" , "k2" ]
- PythonCode:
code: |
sym = connect. container. data[ "SortedTableTwo" ]
data_sorted = sym. records. sort_values( sym. records. columns[ : - 1 ] . tolist( ) ) . values. tolist( )
expected = [ [ 'i2' , 'j1' , 'k1' , 6.0 ] ,
[ 'i2' , 'j2' , 'k2' , 5.0 ] ,
[ 'i2' , 'j2' , 'k1' , 4.0 ] ,
[ 'i1' , 'j1' , 'k2' , 3.0 ] ,
[ 'i1' , 'j1' , 'k1' , 2.0 ] ,
[ 'i1' , 'j2' , 'k2' , 1.0 ] ]
if data_sorted != expected:
raise Exception( "Unexpected sorted data SortedTableTwo." )
$offEmbeddedCode
$offEcho
$onEchoV.access > readAccessTest.gms
$call rm -f testdb.accdb
$call rm -f distanceTableOne.csv
$call rm -f distanceTableTwo.csv
$call rm -f parameterTable.csv
$call rm -f deciTable.csv
$call rm -f scalarTable.csv
$call rm -f setTable.csv
$onEcho > distanceTableOne.csv
id,source,newyork,chicago,topeka
1,seattle,2. 5,1. 7,1. 8
2,san-diego,2. 5,1. 8,1. 4
$offEcho
$onEcho > distanceTableTwo.csv
id,i_place,j_place,miles
1,seattle,new-york,2. 5
2,seattle,chicago,1. 7
3,seattle,topeka,1. 8
4,san-diego,new-york,2. 5
5,san-diego,chicago,1. 8
6,san-diego,topeka,1. 4
$offEcho
$onEcho > parameterTable.csv
label,value_col1,value_col2
i3,0. 453,0. 532
i2,0. 638,0. 478
i1,0. 987,0. 804
$offEcho
$onEcho > deciTable.csv
label,value_col1
i3,121. 12
i2,122. 22
i1,123. 32
$offEcho
$onEcho > scalarTable.csv
value_col
653
$offEcho
$onEcho > setTable.csv
id,label1,label2,expText1,expText2
1,i1,j1,Text1,RandomText1
2,i1,j2,Text2,RandomText2
3,i1,j3,Text3,RandomText3
4,i2,j1,,RandomText4
5,i2,j2,Text5,RandomText5
6,i2,j3,,RandomText6
$offEcho
$onEmbeddedCode Python :
import win32com. client as win32
import pyodbc
Access = win32. Dispatch( "Access.Application" )
Access. NewCurrentDataBase( r"%system.fp%testdb.accdb" )
Access. CloseCurrentDataBase( )
Access. Quit( )
del Access
with pyodbc. connect( ** { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : r'%system.fp%testdb.accdb' } ) as conn:
cur = conn. cursor( )
csvs = [ 'distanceTableOne' , 'distanceTableTwo' , 'parameterTable' , 'deciTable' , 'scalarTable' , 'setTable' ]
for file in csvs:
cur. execute( r"SELECT * INTO [{0}] FROM [text;HDR=Yes;FMT=Delimited(,);Database=%system.fp%].{0}.csv;" . format( file) )
conn. commit( )
cur. close( )
$offEmbeddedCode
$log test connection dictionary missing
$onEmbeddedCode Connect :
- SQLReader:
connectionType: access
symbols:
- name: scalarTable
query: "SELECT * FROM scalarTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log test wrong connection type (default: sqlite)
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: wrongpyodbc
symbols:
- name: scalarTable
query: "SELECT * FROM scalarTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log test name missing
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- query: "SELECT * FROM scalarTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log test SQL query missing
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: scalarTable
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log test type option "set" missing
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: setTable
query: "SELECT * FROM setTable;"
valueColumns: "lastCol"
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors
$log reading scalar
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: scalarTable
query: "SELECT * FROM scalarTable;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "scalarTable" ] . records. values. tolist( )
expected = [ [ 653.0 ] ]
if data != expected:
raise Exception( "Unexpected data scalarTable." )
$offEmbeddedCode
$log reading parameter
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: parameterTable
query: "SELECT label, value_col1 FROM parameterTable;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "parameterTable" ] . records. values. tolist( )
expected = [ [ 'i3' , 0.453 ] ,
[ 'i2' , 0.638 ] ,
[ 'i1' , 0.987 ] ]
if data != expected:
raise Exception( "Unexpected data parameterTable." )
$offEmbeddedCode
$log reading parameter with dTypeMap
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: deciTable
query: "SELECT label, value_col1 FROM deciTable;"
dTypeMap: { 'value_col1' : 'int64' }
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "deciTable" ] . records. values. tolist( )
expected = [ [ 'i3' , 121 ] ,
[ 'i2' , 122 ] ,
[ 'i1' , 123 ] ]
if data != expected:
raise Exception( "Unexpected data deciTable." )
$offEmbeddedCode
$log reading set with explanatoryText
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: setTable
query: "SELECT label1, label2, expText1 FROM setTable;"
type: set
valueColumns: "lastCol"
valueSubstitutions: { . NaN: "" }
- PythonCode:
code: |
data = connect. container. data[ "setTable" ] . records. values. tolist( )
expected = [ [ 'i1' , 'j1' , 'Text1' ] ,
[ 'i1' , 'j2' , 'Text2' ] ,
[ 'i1' , 'j3' , 'Text3' ] ,
[ 'i2' , 'j1' , '' ] ,
[ 'i2' , 'j2' , 'Text5' ] ,
[ 'i2' , 'j3' , '' ] ]
if data != expected:
raise Exception( "Unexpected data setTable." )
$offEmbeddedCode
$log reading set without explanatoryText
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: setTable
query: "SELECT * FROM setTable;"
type: set
valueColumns: none
- PythonCode:
code: |
data = connect. container. data[ "setTable" ] . records. values. tolist( )
expected = [ [ '1' , 'i1' , 'j1' , 'Text1' , 'RandomText1' , '' ] ,
[ '2' , 'i1' , 'j2' , 'Text2' , 'RandomText2' , '' ] ,
[ '3' , 'i1' , 'j3' , 'Text3' , 'RandomText3' , '' ] ,
[ '5' , 'i2' , 'j2' , 'Text5' , 'RandomText5' , '' ] ]
if data != expected:
raise Exception( "Unexpected data setTable." )
$offEmbeddedCode
$log reading set without explanatoryText and substituting NULL values with Empty string
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: setTable
query: "SELECT * FROM setTable;"
type: set
valueColumns: none
indexSubstitutions: { . NaN: "" }
- PythonCode:
code: |
data = connect. container. data[ "setTable" ] . records. values. tolist( )
expected = [ [ '1' , 'i1' , 'j1' , 'Text1' , 'RandomText1' , '' ] ,
[ '2' , 'i1' , 'j2' , 'Text2' , 'RandomText2' , '' ] ,
[ '3' , 'i1' , 'j3' , 'Text3' , 'RandomText3' , '' ] ,
[ '4' , 'i2' , 'j1' , '' , 'RandomText4' , '' ] ,
[ '5' , 'i2' , 'j2' , 'Text5' , 'RandomText5' , '' ] ,
[ '6' , 'i2' , 'j3' , '' , 'RandomText6' , '' ] , ]
if data != expected:
raise Exception( "Unexpected data setTable." )
$offEmbeddedCode
$log reading 1-dim parameter from 2-dim data with SELECT query
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: distanceTableOne
query: "SELECT source, newyork FROM distanceTableOne;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "distanceTableOne" ] . records. values. tolist( )
expected = [ [ 'seattle' , 2.5 ] ,
[ 'san-diego' , 2.5 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableOne." )
$offEmbeddedCode
$log reading scalar from 2-dim data with SELECT query
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: distanceTableOne
query: "SELECT newyork FROM distanceTableOne WHERE distanceTableOne.source LIKE 'seattle';"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "distanceTableOne" ] . records. values. tolist( )
expected = [ [ 2.5 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableOne." )
$offEmbeddedCode
$log reading 2-dim parameter from 2-dim data
$onEmbeddedCode Connect :
- SQLReader:
connection: { 'DRIVER' : 'Microsoft Access Driver (*.mdb, *.accdb)' , 'DBQ' : '%system.fp%testdb.accdb' }
connectionType: access
symbols:
- name: distanceTableTwo
query: "SELECT i_place, j_place, miles FROM distanceTableTwo;"
valueColumns: "lastCol"
- PythonCode:
code: |
data = connect. container. data[ "distanceTableTwo" ] . records. values. tolist( )
expected = [ [ 'seattle' , 'new-york' , 2.5 ] ,
[ 'seattle' , 'chicago' , 1.7 ] ,
[ 'seattle' , 'topeka' , 1.8 ] ,
[ 'san-diego' , 'new-york' , 2.5 ] ,
[ 'san-diego' , 'chicago' , 1.8 ] ,
[ 'san-diego' , 'topeka' , 1.4 ] ]
if data != expected:
raise Exception( "Unexpected data distanceTableTwo." )
$offEmbeddedCode
$offEcho.access
$onEcho > connect.txt
eolonly 1
--SCHEMASUFFIX Null
--TABLEPREFIX
--CONNECTIONTYPE sqlite
--CONNECTIONDICT { 'database' : '%sysEnv.CONNECTSQLSCHEMASUFFIX%.db' }
--CONNECTIONDICTSQLALCHEMY { 'drivername' : 'sqlite' , 'database' : '%sysEnv.CONNECTSQLSCHEMASUFFIX%.db' }
$offEcho
$log testing sqlite
$call gams readTest.gms lo=%gams.lo% pf=connect.txt
$ifE errorLevel<>0 $goTo cleanup
$onEcho > connect.txt
eolonly 1
--SCHEMASUFFIX %sysEnv. CONNECTSQLSCHEMASUFFIX%
--TABLEPREFIX %sysEnv. CONNECTSQLTABLEPREFIX%
--CONNECTIONTYPE mysql
--CONNECTIONDICT { 'user' : 'root' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' ,'port' : 21000, 'host' : 'internal2.gams.com' , 'database' : 'testdb' }
--CONNECTIONDICTSQLALCHEMY { 'username' : 'root' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' ,'port' : 21000, 'host' : 'internal2.gams.com' , 'database' : 'testdb' , 'drivername' : 'mysql+pymysql' }
$offEcho
$log testing mysql
$call gams readTest.gms lo=%gams.lo% pf=connect.txt
$ifE errorLevel<>0 $goTo cleanup
$onEcho > connect.txt
eolonly 1
--SCHEMASUFFIX %sysEnv. CONNECTSQLSCHEMASUFFIX%
--TABLEPREFIX %sysEnv. CONNECTSQLTABLEPREFIX%
--CONNECTIONTYPE postgres
--CONNECTIONDICT { 'user' : 'postgres' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' ,'port' : 22000, 'host' : 'internal2.gams.com' , 'database' : 'testdb' }
--CONNECTIONDICTSQLALCHEMY { 'username' : 'postgres' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' ,'port' : 22000, 'host' : 'internal2.gams.com' , 'database' : 'testdb' , 'drivername' : 'postgresql+psycopg2' }
$offEcho
$log testing postgres
$call gams readTest.gms lo=%gams.lo% pf=connect.txt
$ifE errorLevel<>0 $goTo cleanup
$onEcho > connect.txt
eolonly 1
--SCHEMASUFFIX Null
--TABLEPREFIX dbo.
--CONNECTIONTYPE sqlserver
--CONNECTIONDICT { 'user' : 'sa' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 23000, 'host' : 'internal2.gams.com' , 'database' : '%sysEnv.CONNECTSQLSCHEMASUFFIX%' }
--CONNECTIONDICTSQLALCHEMY { 'username' : 'sa' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' ,'port' : 23000, 'host' : 'internal2.gams.com' , 'database' : '%sysEnv.CONNECTSQLSCHEMASUFFIX%' , 'drivername' : 'mssql+pymssql' }
$offEcho
$log testing sqlserver
$call gams readTest.gms lo=%gams.lo% pf=connect.txt
$ifE errorLevel<>0 $goTo cleanup
$label cleanup
$log dropping test schemas
$onEmbeddedCode Python :
import psycopg2, pymysql, pymssql
with psycopg2. connect( ** { 'user' : 'postgres' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 22000 , 'host' : 'internal2.gams.com' , 'database' : 'testdb' } ) as conn:
cur = conn. cursor( )
cur. execute( f"DROP SCHEMA IF EXISTS {schemaName} CASCADE;" )
conn. commit( )
cur. close( )
with pymysql. connect( ** { 'user' : 'root' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 21000 , 'host' : 'internal2.gams.com' , 'database' : 'testdb' } ) as conn:
cur = conn. cursor( )
cur. execute( f"DROP SCHEMA IF EXISTS {schemaName};" )
conn. commit( )
cur. close( )
with pymssql. connect( ** { 'user' : 'sa' , 'password' : '%sysEnv.GCONNECTSQLDBPASSWORD%' , 'port' : 23000 , 'host' : 'internal2.gams.com' } , autocommit= True ) as conn:
cur = conn. cursor( )
cur. execute( "USE MASTER;" )
cur. execute( f"""IF DB_ID('{schemaName}') IS NOT NULL DROP DATABASE {schemaName};""" )
conn. commit( )
cur. close( )
$offEmbeddedCode
$ifE errorLevel<>0 $abort "Error occurred! Check log"
$log testing access
$if set RUNACCESS $call.checkErrorLevel gams readAccessTest.gms lo=%gams.lo%
$log Test that empty table reads as an empty symbol (Not None)
$onEmbeddedCode Connect :
- PythonCode:
code: |
import sqlite3
conn = sqlite3. connect( '%sysEnv.CONNECTSQLSCHEMASUFFIX%.db' )
cursor = conn. cursor( )
create_table = """
CREATE TABLE %sysEnv.CONNECTSQLSCHEMASUFFIX%emptyTable (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
"""
cursor. execute( create_table)
conn. commit( )
conn. close( )
- SQLReader:
connection: { "database" : "%sysEnv.CONNECTSQLSCHEMASUFFIX%.db" }
symbols:
- name: d
query: "SELECT * FROM %sysEnv.CONNECTSQLSCHEMASUFFIX%emptyTable;"
type: par
- PythonCode:
code: |
data = connect. container[ 'd' ] . records
expected_cols = [ 0 , 1 , 'value' ]
if data is None or not data. empty:
raise Exception( "Expected >d< to have an empty DataFrame." )
if ( data. columns != expected_cols) . any( ) :
raise Exception( "Unexpected columns for >d<." )
$offEmbeddedCode
$if not errorFree $abort 'Errors'
$log Test raising an exception for existing symbol name
$onEmbeddedCode Connect :
- PythonCode:
code: |
connect. container. addSet( "i" )
connect. container. addSet( "j" )
connect. container. addParameter( "d" , domain= [ "i" , "j" ] )
- PythonCode:
code: |
import sqlite3
conn = sqlite3. connect( '%sysEnv.CONNECTSQLSCHEMASUFFIX%.db' )
cursor = conn. cursor( )
create_table = """
CREATE TABLE %sysEnv.CONNECTSQLSCHEMASUFFIX%existingSymbol (
i INTEGER PRIMARY KEY,
j TEXT,
age INTEGER
);
"""
cursor. execute( create_table)
conn. commit( )
conn. close( )
- SQLReader:
connection: { "database" : "%sysEnv.CONNECTSQLSCHEMASUFFIX%.db" }
symbols:
- name: d
query: "SELECT * FROM %sysEnv.CONNECTSQLSCHEMASUFFIX%existingSymbol;"
type: par
$offEmbeddedCode
$if errorFree $abort 'Expect errors'
$clearErrors