我正在尝试连接到数据库并在网页上显示一些数据,下面是我尝试过的:
import jaydebeapi
import jpype
import sys
from flask import Flask
from flask import request, render_template
app = Flask(__name__)
@app.route('/')
def my_form():
return render_template('Name.html')
@app.route('/', methods=['POST'])
def teradataconn():
classpath="/export/home/tdgssconfig.jar:/export/home/terajdbc4.jar"
Name = request.form['Name']
query="select top 1 Col1, Col2, Col3 from TABLE where Col2='Name' and Col3 is null order by Col1 desc"
jvm_path=jpype.getDefaultJVMPath()
jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath)
conn=jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 'jdbc:teradata://HostName/DATABASE=DBNAME,USER=USER_NAME,PASSWORD=PassWord')
cursor=conn.cursor()
cursor.execute(query)
rows=cursor.fetchall()
conn.close()
return render_template('output.html',rows=rows)
if __name__ == '__main__':
app.run
下面是输入将针对DB处理的名称的页面(Name.html)。
<!DOCTYPE html>
<html lang="en">
<body>
<h1>Enter JC Name</h1>
<form action="." method="POST">
<input type="text" name="Name">
<input type="submit">
</form>
</body>
</html>
下面是显示输出(output.html):
<!DOCTYPE html>
<html lang="en">
<body>
<p>{{ rows }}<p>
</body>
</html>
在第一页上输入名称后,我得到低于输出。请建议需要做些什么来解决它。
Bad Request
The browser (or proxy) sent a request that this server could not understand.
我删除了以下行并硬编码了值,我得到了结果,所以似乎价值没有通过,请提出任何建议。
Name = request.form['Name']
答案 0 :(得分:0)
根据print request.form
的输出,您的问题不在Flask中,而是在您的表单提交中。 Flask是一个接收具有键值对的表单:text:someName
和my-form:Send
。
(如果您尝试访问不存在的400 Bad Request
属性,Flask将返回request.form
错误; see docs。在这种情况下,您正在访问属性{{} 1}}。)
第二对是因为您已将Name
和name
属性赋予value
输入。没有必要这个!您可以简单地声明该元素:submit
。
对于第一个<input type="submit">
,它发送<input>
属性而不是type
属性作为键是奇怪的。我无法重新创建该问题。确保您的HTML中的元素确实已声明为name
,而不是<input type="text" name="Name">
。
答案 1 :(得分:-1)
@app.route('/', methods = ['GET','POST'])
def my_form():
if request.method='GET':
return render_template('Name.html')
if request.method='POST':
classpath="/export/home/tdgssconfig.jar:/export/home/terajdbc4.jar"
Name = request.form['Name']
query="select top 1 Col1, Col2, Col3 from TABLE where Col2='Name' and Col3 is null order by Col1 desc"
jvm_path=jpype.getDefaultJVMPath()
jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % classpath)
conn=jaydebeapi.connect('com.teradata.jdbc.TeraDriver', 'jdbc:teradata://HostName/DATABASE=DBNAME,USER=USER_NAME,PASSWORD=PassWord')
cursor=conn.cursor()
cursor.execute(query)
rows=cursor.fetchall()
conn.close()
return render_template('output.html',rows=rows)