python - flask 和 sqlite 更新可能为空的值
问题描述
我需要根据从表单收到的发布请求更新数据库中一行的值。
HTML 表单将通过 post 请求发送更新行所需的部分或全部值。我认为我应该使用UPDATE查询来更新行中的值,但是这些值可能是空的,这会引发语法错误。
HTML是:
<form action="/change-profile-information" method="POST">
<label>email</label>
<input type="email" name="email" value={{result[0]}}>
<label>name contact person</label>
<input type="text" name="contact_person" value={{result[1]}}>
<label>phone</label>
<input type="tel" name="phone" value={{result[2]}}>
<label>address</label>
<input type="text" name="address" value={{result[3]}}>
<label>profile image</label>
<input type="file" name="image">
<button type="submit">SUBMIT</button>
</form>
在我的 Flask 函数中用于发布请求时,我正在执行 SQLite 查询以更新值。
@app.route('/change-profile-information', methods=['POST'])
def change_profile_information():
if 'username' in session:
user_id = session['user_id']
email = request.form.get('email')
first_name = request.form.get('first_name')
last_name = request.form.get('last_name')
phone = request.form.get('phone')
address = request.form.get('address')
image = request.form.get('image')
# change in DB
con = lite.connect('base.db')
cur = con.cursor()
try:
cur.execute(f"""UPDATE farmers
SET email='{email}', name='{first_name}'
lastname='{last_name}',
phone='{phone}', address='{address}',
profile_image='{image}'
WHERE farmer_id='{user_id}';""")
# reload page
return redirect('/settings-farmer.html', code=302)
except lite.Error as error:
return "Failed: "+str(error)
finally:
if (con):
con.close()
在最后一段代码中, 的值first_name = request.form.get('first_name')
可能为空,这给了我一个问题。事实上,如果我发送带有last_name
它的参数的请求将通过一个错误说Failed: near "lastname": syntax error
。似乎如果参数为空,我仍然有空字符串,但这仍然会引发 SQLite 的语法错误。
我应该使用?
andVALUES('{last_name}')
还是应该使用REPLACE
而不是UPDATE
?
解决方案
推荐阅读
- bash - read -p "a\n" VARIABLE 不创建新行
- visual-studio-code - vscode-remote SSH 每个主机默认扩展
- python - Python 多处理模块
- bash - 如何在同一行上打印 grep 模式和生成的匹配行?
- sql - 根据 A 列更新表中所有行的 B 列
- reactjs - React tsx 函数没有收到值
- excel - 公式可以从文本字符串中提取长空格日期吗?
- python - 通过 BeautifulSoup 从 HTML 表中制作字典?
- linux - 在 Ubuntu 16.04 中构建 Openmvg 时出现 CMake 错误
- html - 为什么@font-face 在此代码段中不起作用?