我正在嘗試基於用戶輸入執行數據庫搜索。以下代碼中的DBresults函數旨在捕獲存儲在「ranumber」中的輸入,並對該特定記錄執行SQL搜索。我似乎無法得到這個工作。我試過很多產生各種錯誤的東西,但是我得到的最新錯誤是「TypeError:並非在字符串格式化過程中轉換了所有參數」。 我在這裏錯過了什麼?基於用戶輸入使用python函數執行psycopg2數據庫搜索
def connectToDB():
psycopg2.connect('dbname=reportingdb user=rai_gui password=Rad1oInd host=10.100.51.42')
def DBresults(ranumber):
conn = psycopg2.connect('dbname=reporting user=rai_user password=Rad1odsfdInd host=10.100.47.42')
cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
cur.execute("SELECT * FROM radio_archive_index_gui.radio_archive_index_gui WHERE rai_number= %s", (ranumber))
searchresults = cur.fetchall()
print (searchresults)
####Index Page
@app.route('/', methods=['GET', 'POST'])
@app.route('/index', methods=['GET', 'POST'])
def index():
exception = ""
try:
connectToDB
except:
exception = 'Failure to connect to db'
form = StaffNames()
if not exception:
if form.validate_on_submit():
query = {
'staff': dict(staff_choices).get(form.staff.data),
'ranumber': form.ranumber.data
}
return redirect(url_for('results', **query))
return render_template(
'index.html', title='Search Page', exception=exception, form=form
)
#####Results Page
@app.route('/results')
def results():
ranumber = request.args.get('ranumber', None)
staff = request.args.get('staff', None)
DBresults()
return render_template(
'results.html', title='Results', staff=staff, ranumber=ranumber
)
這裏是我的form.py文件,如果有幫助:
staff_choices=[("", ""), ('1', 'John Jones'), ('2', 'Chris Hughes'), (' 3', 'Lyn bear')]
class StaffNames(Form):
ranumber = StringField('ranumber', validators=[DataRequired()])
staff = SelectField('staff',choices=staff_choices,validators=[DataRequired()])
你的例子中似乎有一些遺漏的代碼。你在'index()'中的'connectToDB()'調用中丟失了括號,並且你沒有在結果中將'ranumber'傳遞給'DBresults()'。 – cmpgamer
謝謝,奇怪的是,connectToDB部分沒有使用圓括號,但現在我已經將它們包括進來以便進行良好的練習。 DBresults建議非常感謝。 – nmh