Files
dolt/mysql-client-tests/python/sqlalchemy-test.py
2020-10-30 15:07:06 -07:00

57 lines
1.6 KiB
Python

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()