python - SQLAlchemy 完整性错误唯一约束失败:users.login
问题描述
我正在使用 Flask 制作一个 Web 仪表板,它有 Discord 登录(Flask-Dance)。代码给了我这个错误:sqlalchemy.exc.IntegrityError: (sqlite3.IntegrityError) UNIQUE constraint failed: users.login
。如果用户已经登录,该代码完全可以正常工作。但是当没有登录的其他人尝试登录时,就会发生错误。这是我目前正在使用的:
class User(UserMixin, dbsl.Model):
id = dbsl.Column(dbsl.Integer, primary_key=True)
email = dbsl.Column(dbsl.String(256), unique=True)
class OAuth(OAuthConsumerMixin, dbsl.Model):
user_id = dbsl.Column(dbsl.Integer, dbsl.ForeignKey(User.id), nullable=False)
user = dbsl.relationship(User)
@oauth_authorized.connect_via(d_oauth)
def discord_logged_in(blueprint, token):
resp = discord_oauth.discord.get("/api/users/@me").content
info = json.loads(resp)
user_id = info["id"]
query = OAuth.query.filter_by(provider=blueprint.name, user_id=user_id)
try:
oauth = query.one()
except NoResultFound:
oauth = OAuth(user_id=user_id, token=token)
if oauth.user:
login_user(oauth.user)
else:
user = User(email=info["email"], id=user_id)
oauth.user = user
dbsl.session.add_all([user, oauth])
dbsl.session.commit()
login_user(user)
return False
正如我所说,该程序运行良好,但是当未登录的人尝试登录时会引发此错误。我该如何解决这个问题?
解决方案
推荐阅读
- java - 我需要在java中初始化一个地图列表,但是我尝试过的每一种方式都将它初始化为null
- h2 - 如何像 sql server 一样在 h2 中使用 getDate()
- rtsp - 从 ffmpeg 到 rtsp 格式的 Mp4 视频
- java - 如何使用带有 Java 的 chrome 选项在 Selenoid 中下载文件
- php - 如何在 4 列中显示查询结果并在 4 列之后移动到另一行?
- java - 在 javax.annotation.processing.Processor 中获取 VariableElement 的封闭类名
- dart - Dart,Flutter:将 .jpg 文件上传到 Google Drive
- laravel - 如何在 Laravel 查询生成器中使用 WITH 子句
- php - 如何根据该数据将数据从 php 发送到 R 脚本以进行某些预测?
- android - 无法显示从存储在 SQLite 数据库中的列表中提取的数据