首页 > 解决方案 > 将 HTML 表单中的空输入转换为 Flask 中的 None 以在 PostgreSQL 中将它们存储为 NULL

问题描述

我有一个 HTML 表单,我在 Flask 应用程序中处理请求。如果某些输入是空字符串,我想将它们转换为None值,所以我可以NULLs通过 SQLAlchamy 将它们存储在 PostgreSQL 数据库中。

到目前为止,唯一有效的方法如下:

# convert empty strings to None
if parts == "":
    parts = None
if car_model == "":
    car_model = None
if item_count == "":
    item_count = None

# save to db
sale = Sales(date=date, parts=parts, car_model=car_model,
             item_count=item_count, value=value)

有没有更优雅的方法来做到这一点?我尝试了一些东西,但没有成功。

我读到您可以在None从表单获取输入时指定值:

parts = request.form.get('parts', None)

我还尝试创建一个数组,然后循环遍历它。问题是原始变量没有改变,集合中的变量是。

s = [parts, car_model, item_count)
for i, item in enumerate(s):
    if item == "":
        s[i] = None

如果我有更多变量,为每个变量创建一个 if 语句将是低效的。有没有更有效,更蟒蛇的方式?

标签: pythonpostgresqlflasksqlalchemy

解决方案


你可以做:

parts = request.form.get('Parts') or None

或者

parts = request.form['Parts'] or None

如果“零件”一开始就没有出现在表格中,它仍然会返回 400。

如果Parts表单中的 是一个空字符串,它将确保parts变量变为None.

控制台示例:

>>> print('' or None)
None

>>> print('hello' or None)
hello

推荐阅读