为什么我的mysql数据库没有更新(使用flask / python)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为什么我的mysql数据库没有更新(使用flask / python),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3599字,纯文字阅读大概需要6分钟。
内容图文
我正在尝试在用户输入用户名和密码时将用户添加到数据库中.但是,数据库根本没有更新,数据库中的所有信息都保持不变.我已经测试了代码并且它确实运行但是mysql.connect().commit()没有将代码提交到数据库.
我的烧瓶文件:
from flask import Flask, jsonify, render_template, request, Response, json, redirect, url_for
from flaskext.mysql import MySQL
import re
from MyFunction import *
from get_tv_name import *
mysql = MySQL()
app = Flask(__name__, static_folder="", static_url_path='')
app.config['SECRET_KEY'] = 'F34TF$($e34D';
app.config['MYSQL_DATABASE_USER'] = 'root'
app.config['MYSQL_DATABASE_PASSWORD'] = ""
app.config['MYSQL_DATABASE_DB'] = 'accounts'
app.config['MYSQL_DATABASE_HOST'] = 'localhost'
mysql.init_app(app)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/register.html/', methods=['GET', 'POST'])
def register():
error = None
if request.method == 'POST':
cursor = mysql.connect().cursor()
cursor.execute("SELECT * from _accounts where Username='" + request.form['username'] + "' and Password='" + request.form['password'] + "'")
data = cursor.fetchone()
if data == None:
cursor.execute("INSERT INTO _accounts VALUES (null, '" + request.form['username'] + "', '" + request.form['password'] + "')")
mysql.connect().commit
redirect(url_for('index'))
else:
error = "it is complete"
return render_template('/register.html/', error=error)
if __name__ == '__main__':
app.run(port=8080, debug=True)
我的HTML:
<div class="container">
<div class="row">
<div class="col-md-6 centered">
<div class="panel panel-default">
<div class="panel-heading"> <strong class="">Create an Account!</strong>
</div>
<div class="panel-body">
<form class="form-horizontal" role="form" action="" method="post">
<div class="form-group">
<label for="inputFirstName3" class="col-sm-3 control-label">First Name</label>
<div class="col-sm-9">
<input type="email" class="form-control" id="inputEmail3" placeholder="First Name" required="">
</div>
</div>
<div class="form-group">
<label for="inputLastName3" class="col-sm-3 control-label">Last Name</label>
<div class="col-sm-9">
<input type="email" class="form-control" id="inputEmail3" placeholder="Last Name" required="">
</div>
</div>
<div class="form-group">
<label for="inputEmail3" class="col-sm-3 control-label">Username</label>
<div class="col-sm-9">
<input type="text" required="" placeholder="Username" class="form-control" name="username" value="{{
request.form.username }}">
</div>
</div>
<div class="form-group">
<label for="inputPassword3" class="col-sm-3 control-label">Password</label>
<div class="col-sm-9">
<input type="password" class="form-control" required="" placeholder="Password" name="password" value="{{
request.form.password }}">
</div>
</div>
<div class="form-group last">
<div class="col-md-offset-3 col-md-3">
<button type="submit" class="btn btn-success btn-sm">Create account</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
解决方法:
数据库未更新的原因是您没有提交事务.您使用mysql.conn()创建连接,然后通过添加.cursor()从中获取游标.当您提交更改时,再次调用mysql.conn()可以获得全新的连接.
您要做的是捕获对连接的引用,以便以后使用它.您还需要使用参数化查询来避免SQL注入攻击等问题.
conn = mysql.connect()
cursor = conn.cursor()
data = cursor.fetchone()
if data is None:
cursor.execute("INSERT INTO _accounts VALUES (null, %s, %s)", (request.form['username'], request.form['password']))
conn.commit()
redirect(url_for('index')) # I'm guessing you want to put a return here.
else:
error = "it is complete" # snip
最后,当与None比较时,你会想要使用is运算符而不是相等. From PEP8
Comparisons to singletons like None should always be done with
is
oris not
, never the equality operators.
内容总结
以上是互联网集市为您收集整理的为什么我的mysql数据库没有更新(使用flask / python)全部内容,希望文章能够帮你解决为什么我的mysql数据库没有更新(使用flask / python)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。