from flask importFlask,request,render_templatefrom flask_sqlalchemy importSQLAlchemy
app= Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db' #这里用这个是不行的 注意修改为mysql 才可以正常使用db=SQLAlchemy(app)
@app.route("/listModel", methods=["GET"])deflistModel():
dbName= request.args.get("dbname","xx")
tableStr= """select table_name,table_comment from information_schema.tables where TABLE_TYPE='BASE TABLE' and table_schema='{}'""".format(
dbName)
resultList=db.engine.execute(tableStr)
_infoList=[]ifresultList:for index, result inenumerate(resultList):
tableName=result[0]
filedStr= """select ORDINAL_POSITION,column_name,COLUMN_COMMENT,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,numeric_precision,numeric_scale,COLUMN_KEY,COLUMN_DEFAULT,IS_NULLABLE from information_schema.columns where table_schema='{}' and table_name='{}'""".format(
dbName, tableName)
filedList=db.engine.execute(filedStr)
_infolist=[]iffiledList:for field infiledList:if field[5]:
CHARACTER_MAXIMUM_LENGTH= field[5]elif field[4]:
CHARACTER_MAXIMUM_LENGTH= field[4]else:
CHARACTER_MAXIMUM_LENGTH=0if field[9] == "YES":
IS_NULLABLE= "Y"
else:
IS_NULLABLE= "N"_infoDict={"ORDINAL_POSITION": field[0],"column_name": field[1],"COLUMN_COMMENT": field[2],"DATA_TYPE": field[3],"CHARACTER_MAXIMUM_LENGTH": CHARACTER_MAXIMUM_LENGTH,"numeric_scale": field[6] if field[6] else0,"COLUMN_KEY": "Y" if field[7] else "","COLUMN_DEFAULT": field[8] if field[8] else "","IS_NULLABLE": IS_NULLABLE,
}
_infolist.append(_infoDict)
infoDict={"index": index + 1,"tableName": tableName,"table_comment": result[1],"fields": _infolist
}
_infoList.append(infoDict)return render_template("demos.html", rows=_infoList,dbName=dbName)if __name__ == '__main__':
app.run()