【发布时间】:2020-12-14 14:22:22
【问题描述】:
所以我试图从 mysql 数据库中填充 Flask 表单的 SelectField。这是相关代码:
app = flask.Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root@localhost/vshdb?'
app.config['SECRET_KEY'] = 'mysecret'
db = SQLAlchemy(app)
admin = Admin(app)
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = ''
app.config['MYSQL_DB'] = 'vshdb'
mysql = MySQL(app)
#Creating a connection cursor
#app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://root:password@localhost/vshdb'
class history(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
vendorName = db.Column(db.String(100))
vendorCompany = db.Column(db.String(100))
sopVer = db.Column(db.Numeric)
sopName = db.Column(db.String(100))
entryDate = db.Column(db.Date)
class vendorForm(FlaskForm):
vendorCompany = SelectField('vendorCompany', choices=[], validators=[DataRequired()])
vendorName = SelectField('vendorName', choices=[], validators=[DataRequired()])
sopName = SelectField('sopName', choices=[], validators=[DataRequired()])
sopVer = StringField('sopVer', validators=[DataRequired()])
@app.route('/test')
def test():
form = vendorForm()
cursor = mysql.connection.cursor()
cursor.execute("SELECT DISTINCT vendorCompany from history")
vendCompChoices = cursor.fetchall()
print(vendCompChoices)
form.vendorCompany.choices = [(vC, vC) for vC in vendCompChoices]
return render_template('FlaskForm.html', form=form)
这是我的测试 html 模板:
<!doctype html>
<html>
<body>
<form method="POST">
{{ form.csrf_token }}
{{ form.vendorCompany }}
<input type="submit" value="Go">
</form>
</body>
</html>
我能够在选择字段中获得唯一值,但它们没有正确显示。他们是这样来的:
值正确,但格式不正确 这是 print(vendCompChoices) 的结果:
(('',), ('ABC',), ('qw',), ('qfadas',), ('eqwe',), ('asdas',), ('wqeq',))
请帮忙
【问题讨论】:
标签: python mysql flask flask-wtforms