from flask import Flask, request, Response
import pyodbc
import pandas as pd
from collections import defaultdict
import os
app = Flask(__name__)
CONN = False
STYLE = """
"""
@app.route("/")
def tables():
cursor = CONN.cursor()
tables = []
for row in cursor.tables():
if row.table_type == "TABLE":
tables.append(row.table_name)
html = "
Tables
"
for t in tables:
html += f'- {t}
'
html += "
"
return html
@app.route("/table/")
def table(name):
f = request.args.get("f")
v = request.args.get("v")
query = f"SELECT * FROM [{name}]"
if f and v:
query += f"WHERE `{f}` = ?"
df = pd.read_sql(query, CONN, params=[v])
else:
df = pd.read_sql(query, CONN)
def gen():
yield STYLE
yield ""
yield "" + "".join(
f"| {c} | " for c in df.columns
) + "
"
for row in df.itertuples(index=False):
yield "" + "".join(
f"| {v} | " for v in row
) + "
"
yield "
"
return Response(gen(), mimetype="text/html")
if len(sys.argv) > 1:
CONN = pyodbc.connect(f"{sys.argv[1]}")
app.run(host="0.0.0.0", port=5000, debug=True, use_reloader=False)
else:
print("You need to supply a pyodbc connection string")