Rumah > Soal Jawab > teks badan
想知道如何解决
E:\Python\Python35-32\lib\site-packages\pymysql\cursors.py:166: Warning: (1366, "Incorrect string value: '\\xD6\\xD0\\xB9\\xFA\\xB1\\xEA...' for column 'VARIABLE_VALUE' at row 479")
result = self._query(query)
127.0.0.1 - - [21/Feb/2017 09:17:37] "POST /register HTTP/1.1" 200 -
Debugging middleware caught exception in streamed response at a point where response headers were already sent.
Traceback (most recent call last):
File "E:\Python\Python35-32\lib\site-packages\flask\app.py", line 2000, in __call__
return self.wsgi_app(environ, start_response)
File "E:\Python\Python35-32\lib\site-packages\flask\app.py", line 1996, in wsgi_app
ctx.auto_pop(error)
File "E:\Python\Python35-32\lib\site-packages\flask\ctx.py", line 387, in auto_pop
self.pop(exc)
File "E:\Python\Python35-32\lib\site-packages\flask\ctx.py", line 376, in pop
app_ctx.pop(exc)
File "E:\Python\Python35-32\lib\site-packages\flask\ctx.py", line 189, in pop
self.app.do_teardown_appcontext(exc)
File "E:\Python\Python35-32\lib\site-packages\flask\app.py", line 1898, in do_teardown_appcontext
func(exc)
File "E:\Python\Python35-32\lib\site-packages\flask_sqlalchemy\__init__.py", line 822, in shutdown_session
self.session.commit()
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\scoping.py", line 157, in do
return getattr(self.registry(), name)(*args, **kwargs)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\session.py", line 874, in commit
self.transaction.commit()
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\session.py", line 461, in commit
self._prepare_impl()
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\session.py", line 441, in _prepare_impl
self.session.flush()
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\session.py", line 2139, in flush
self._flush(objects)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\session.py", line 2259, in _flush
transaction.rollback(_capture_exception=True)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\util\langhelpers.py", line 60, in __exit__
compat.reraise(exc_type, exc_value, exc_tb)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\util\compat.py", line 187, in reraise
raise value
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\session.py", line 2223, in _flush
flush_context.execute()
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 389, in execute
rec.execute(self)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\unitofwork.py", line 548, in execute
uow
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\persistence.py", line 181, in save_obj
mapper, table, insert)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\orm\persistence.py", line 835, in _emit_insert_statements
execute(statement, params)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\engine\base.py", line 945, in execute
return meth(self, multiparams, params)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\sql\elements.py", line 263, in _execute_on_connection
return connection._execute_clauseelement(self, multiparams, params)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\engine\base.py", line 1053, in _execute_clauseelement
compiled_sql, distilled_params
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\engine\base.py", line 1189, in _execute_context
context)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\engine\base.py", line 1393, in _handle_dbapi_exception
exc_info
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\util\compat.py", line 203, in raise_from_cause
reraise(type(exception), exception, tb=exc_tb, cause=cause)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\util\compat.py", line 186, in reraise
raise value.with_traceback(tb)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\engine\base.py", line 1182, in _execute_context
context)
File "E:\Python\Python35-32\lib\site-packages\sqlalchemy\engine\default.py", line 470, in do_execute
cursor.execute(statement, parameters)
File "E:\Python\Python35-32\lib\site-packages\pymysql\cursors.py", line 166, in execute
result = self._query(query)
File "E:\Python\Python35-32\lib\site-packages\pymysql\cursors.py", line 322, in _query
conn.query(q)
File "E:\Python\Python35-32\lib\site-packages\pymysql\connections.py", line 835, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "E:\Python\Python35-32\lib\site-packages\pymysql\connections.py", line 1019, in _read_query_result
result.read()
File "E:\Python\Python35-32\lib\site-packages\pymysql\connections.py", line 1302, in read
first_packet = self.connection._read_packet()
File "E:\Python\Python35-32\lib\site-packages\pymysql\connections.py", line 981, in _read_packet
packet.check_error()
File "E:\Python\Python35-32\lib\site-packages\pymysql\connections.py", line 393, in check_error
err.raise_mysql_exception(self._data)
File "E:\Python\Python35-32\lib\site-packages\pymysql\err.py", line 107, in raise_mysql_exception
raise errorclass(errno, errval)
sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1062, "Duplicate entry '123' for key 'ix_users_username'") [SQL: 'INSERT INTO users (username, password) VALUES (%(username)s, %(password)s)'] [parameters: {'username': '123', 'password': '123'}]
127.0.0.1 - - [21/Feb/2017 09:17:42] "POST /register HTTP/1.1" 200 -
黄舟2017-04-18 10:23:08
Anda harus menyemak dahulu sama ada pengguna telah didaftarkan, kemudian db.session.add(). Jika anda mesti mengemas kini kunci utama atau rekod unik, anda boleh mencuba db.session.merge(). Sebenarnya, apa yang dilaksanakan ialah pilih+kemas kini
PHPz2017-04-18 10:23:08
sqlalchemy.exc.IntegrityError: (pymysql.err.IntegrityError) (1062, "Entri pendua '123' untuk kunci 'ix_users_username'") [SQL: 'MASUKKAN KE DALAM pengguna (nama pengguna, kata laluan) NILAI (%(nama pengguna) s, %(kata laluan)s)'] [parameter: {'nama pengguna': '123', 'kata laluan': '123'}]
mysql是否设置了主键id?
ringa_lee2017-04-18 10:23:08
Saya menambahkan pertanyaan dan pertimbangan di hadapannya, itu sahaja
@app.route("/register", methods=["GET", "POST"])
def register():
form = RegisterForm()
if form.validate_on_submit():
user = User(
username=form.username.data,
password=form.password.data
)
if(User.query.filter_by(username=user.username).first()):
flash("当前用户名已经注册!")
return render_template("/register.html", form=form)
else:
flash("注册成功!")
db.session.merge(user)
return render_template("/register.html", form=form)
return render_template("/register.html", form=form)