我正在尝试创建一个网站表单(使用Python Flask和wtforms和PyoDBC进行我的数据库连接)。我有一个SQL Server数据库,该数据库正在显示在HTML中更新的记录。
我的目标是更新数据库中每个记录的"单位价格"one_answers"折扣"。我创建的表格需要用户在每个字段中的输入。因为该数据库数据显示在列表中,所以我不确定如何将数据匹配回数据库。
当我按原样提交表单时,只有第一个记录才插入数据库中,这就是我的测试环境中的表格(请宽恕可怕的格式)。第一列是用于"单位价格",第二列是"折扣",插入数据库的唯一记录是第一个,元素和元素名称未正确映射。
有没有办法引用" ElementData"中的列?(例如:ElementData.uniqueKey)
如何在HTML中显示的数据与插入数据库的数据之间创建连接?
编辑:我在YouTube上观看了Corey Schafer的一些视频,发现它们很有帮助,但他们还没有解决我的问题。
我目前正在迈向创建自己的列表,然后在HTML中调用该列表的方向。所以而不是
elementData = cur.execute("选择uniquekey,element,elementName,varke prakepricingdata where clientname = clientname")。fetchall()
fetchall()我尝试了:
uniquekey = cur.execute("从fackpricingdata中select selectkey where clientname = clientname")。fetchall()
element = cur.execute("从fackpricingdata中选择element where clientname = clientname")。fetchall()
elementName = cur.execute("从fackpricingdata中select elementName where clientname = clientname")。fetchall()
elementData = [unique key,element,elementname]
但是,当引用elementData [0]时,仅获得唯一的键,我就会获得整个第一行。
我如何获得我的想要的东西?感谢我能得到的任何帮助!
@app.route("/VendorPricing/Example", methods=['GET', 'POST'])
@login_required
def vendorpricing():
clientname = "Example Credit Union"
elementdata = cur.execute("SELECT UniqueKey, Element, ElementName, Quantity FROM FakePricingData WHERE ClientName=clientname").fetchall()
form = VendorPricingForm()
if form.validate_on_submit():
for elementdata in elementdata:
loggedinuserid = current_user.get_id()
query = "INSERT INTO FakeQuoteData (UniqueKey, Element, ElementName, Quantity, UnitPrice, Discount, ClientName, SubmittedBy, LoggedInUserId) VALUES (?,?,?,?,?,?,?,?,?);"
query_values = [form.uniquekey.data, form.element.Element, 'NULL', '0', form.unitprice.data, form.discount.data, clientname, form.submittedby.data, loggedinuserid]
cur.execute(query, query_values)
cur.commit()
flash('Your pricing has been submitted!', 'success')
return redirect(url_for('welcome'))
return render_template('vendorpricing.html', form=form, clientname=clientname, elementdata=elementdata)
------ form ------
class VendorPricingForm(FlaskForm):
unitprice = IntegerField('Unit Price', validators=[DataRequired()])
discount = IntegerField('Discount')
uniquekey = StringField('Unique Key')
submittedby = StringField('Submitted By', validators=[DataRequired()])
submit = SubmitField('Submit')
{% extends "layout.html" %}
{% block content %}
<h2>{{ title }}</h2>
<body>
<form method="POST" action="">
{{ form.hidden_tag() }}
<div class="vendor-form-group">
{{ form.unitprice.label(class="form-control-label") }}
{{ form.discount.label(class="form-control-label") }}
{% for elementdata in elementdata %}
<p>
{{ elementdata }}
{{ form.unitprice }}
{{ form.discount }}
</p>
{% endfor %}
{{ form.submittedby.label(class="form-control-label") }}
<p>{{ form.submittedby }}</p>
{{ form.submit }}
</div>
</form>
</body>
{% endblock content %}
您可以尝试InputRequired()而不是datarequired()