Added Python SQLAlchemy test to mysql-client-tests

This commit is contained in:
Timothy Sehn
2020-09-09 12:53:18 -07:00
parent 0fe271e08b
commit 06d8ca41bb
3 changed files with 62 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
import sqlalchemy
from sqlalchemy.engine import Engine
from sqlalchemy import create_engine
import sys
QUERY_RESPONSE = [
{ "create table test (pk int, value int, primary key(pk))": [] },
{ "describe test": [
('pk', 'int', 'NO', 'PRI', '', ''),
('value', 'int', 'YES', '', '', '')
] },
{ "insert into test (pk, value) values (0,0)": () },
{ "select * from test": [(0,0)] }
]
def main():
user = sys.argv[1]
port = int(sys.argv[2])
db = sys.argv[3]
conn_string_base = "mysql+mysqlconnector://"
engine = create_engine(conn_string_base +
"{user}@127.0.0.1:{port}/{db}".format(user=user,
port=port,
db=db)
)
with engine.connect() as con:
for query_response in QUERY_RESPONSE:
query = list(query_response.keys())[0]
exp_results = query_response[query]
result_proxy = con.execute(query)
try:
results = result_proxy.fetchall()
if ( results != exp_results ):
print("Query:")
print(query)
print("Expected:")
print(exp_results)
print("Received:")
print(results)
exit(1)
# You can't call fetchall on an insert
# so we'll just ignore the exception
except sqlalchemy.exc.ResourceClosedError:
pass
con.close()
exit(0)
main()