使用 Flask 根据用户输入自动生成 SQL 个脚本,python
Auto Generating SQL Scripts based on User Input using Flask, python
问题: 我们 运行 有一个 艰巨的 更新脚本。由于安全问题,更新需要很长时间。我们要确保我们已经编辑了更新脚本 correctly/want 以避免所有权限问题。
解决方法:使用Flask作为前端gui,排除添加错误值的可能性。 Flask 应用程序将通过自动生成脚本来保证将输入正确放置到更新脚本中,因此我们只需复制并粘贴到 SSMS 中即可。
我目前遇到的问题是审美。我能够使用用户输入生成一个烧瓶应用程序并导出一个 SQL 脚本。问题是,sql 看起来很糟糕,这是一个输出示例:
理想情况下,输出应该是多行的,就像所有当前的 SQL 脚本一样:
UPDATE table_name
SET ordercomplete = 1
WHERE UserName = 'testuser' and OrderID = 12345
以下是我的文件:
#templates home.html
<!doctype html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>SQL Auto Generate</title>
<link rel="stylesheet" href="https://unpkg.com/purecss@0.6.2/build/pure-min.css" integrity="sha384-UQiGfs9ICog+LwheBSRCt1o5cbyKIHbwjWscjemyBMT9YCUMZffs6UqUTd0hObXD" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<h1>SQL Auto Generate</h1>
<h2>Add the following inputs, select 'Submit' to generate a script for SQL</h2>
<body>
<div class="main">
<form class="pure-form" method="POST" action="/">
UserName:<br>
<input type="text" name="UserName"><br>
OrderID:<br>
<input type="number" name="OrderID"><br>
<button type="submit" class="pure-button pure-button-primary" value="Submit">Submit</button>
</form>
</div>
<br>
<div class="main">
{% if UserName %}
<p>
{% print('''
UPDATE table_name
SET ordercomplete = 1
WHERE
UserName = {} and OrderID = {}
'''.format(UserName, OrderID)) %}
</p>
{% endif %}
</div>
</body>
# app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
UserName = ''
OrderID = ''
if request.method == 'POST' and 'UserName' in request.form:
UserName = request.form.get('UserName')
OrderID = int(request.form.get('OrderID'))
return render_template("home.html", UserName=UserName, OrderID = OrderID)
if __name__ == '__main__':
app.run(debug=True)
我也上传到github: https://github.com/jpf5046/sqlflask
问:有没有更好的方法通过flask
创建多行文本输出?
我认为您只需要在 html
中添加 br
标签
{% if UserName %}
<p>UPDATE table_name <br>
SET ordercomplete = 1 <br>
WHERE <br>
UserName = {{ UserName }} and OrderID = {{ OrderID }}
</p>
{% endif %}
默认情况下,HTML 会忽略额外的 space,例如行尾。如果您想像生成查询一样显示查询,请使用 <pre>
:
<pre>
UPDATE table_name
SET ordercomplete = 1
WHERE
UserName = {{UserName}} and OrderID = {{OrderId}}
</pre>
问题: 我们 运行 有一个 艰巨的 更新脚本。由于安全问题,更新需要很长时间。我们要确保我们已经编辑了更新脚本 correctly/want 以避免所有权限问题。
解决方法:使用Flask作为前端gui,排除添加错误值的可能性。 Flask 应用程序将通过自动生成脚本来保证将输入正确放置到更新脚本中,因此我们只需复制并粘贴到 SSMS 中即可。
我目前遇到的问题是审美。我能够使用用户输入生成一个烧瓶应用程序并导出一个 SQL 脚本。问题是,sql 看起来很糟糕,这是一个输出示例:
理想情况下,输出应该是多行的,就像所有当前的 SQL 脚本一样:
UPDATE table_name
SET ordercomplete = 1
WHERE UserName = 'testuser' and OrderID = 12345
以下是我的文件:
#templates home.html
<!doctype html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>SQL Auto Generate</title>
<link rel="stylesheet" href="https://unpkg.com/purecss@0.6.2/build/pure-min.css" integrity="sha384-UQiGfs9ICog+LwheBSRCt1o5cbyKIHbwjWscjemyBMT9YCUMZffs6UqUTd0hObXD" crossorigin="anonymous">
<link rel="stylesheet" type="text/css" href="{{ url_for('static', filename='style.css') }}">
</head>
<h1>SQL Auto Generate</h1>
<h2>Add the following inputs, select 'Submit' to generate a script for SQL</h2>
<body>
<div class="main">
<form class="pure-form" method="POST" action="/">
UserName:<br>
<input type="text" name="UserName"><br>
OrderID:<br>
<input type="number" name="OrderID"><br>
<button type="submit" class="pure-button pure-button-primary" value="Submit">Submit</button>
</form>
</div>
<br>
<div class="main">
{% if UserName %}
<p>
{% print('''
UPDATE table_name
SET ordercomplete = 1
WHERE
UserName = {} and OrderID = {}
'''.format(UserName, OrderID)) %}
</p>
{% endif %}
</div>
</body>
# app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
UserName = ''
OrderID = ''
if request.method == 'POST' and 'UserName' in request.form:
UserName = request.form.get('UserName')
OrderID = int(request.form.get('OrderID'))
return render_template("home.html", UserName=UserName, OrderID = OrderID)
if __name__ == '__main__':
app.run(debug=True)
我也上传到github: https://github.com/jpf5046/sqlflask
问:有没有更好的方法通过flask
创建多行文本输出?
我认为您只需要在 html
中添加br
标签
{% if UserName %}
<p>UPDATE table_name <br>
SET ordercomplete = 1 <br>
WHERE <br>
UserName = {{ UserName }} and OrderID = {{ OrderID }}
</p>
{% endif %}
默认情况下,HTML 会忽略额外的 space,例如行尾。如果您想像生成查询一样显示查询,请使用 <pre>
:
<pre>
UPDATE table_name
SET ordercomplete = 1
WHERE
UserName = {{UserName}} and OrderID = {{OrderId}}
</pre>