python3中更新无重复表的查询



我在做一个项目;我必须更新一个表与动态值从一个脚本。我的表模式,这可能是错误的是:

数据库结构

我正在处理的表的结构

我试图插入AccessToken, RefreshToken, UserID的新值,如果已经有一个UserID具有相同的ID只是更新该值。我的代码是:

try:
with conexion.cursor() as cursor:
query = "INSERT INTO Tokens (AccessToken, RefreshToken, UserID) ON DUPLICATE KEY UPDATE UserID = VALUES(UserID), VALUES (%s, %s, %s, %s)"
val = (AccessToken, RefreshToken, User_ID, User_ID)
cursor.execute(query, val)
conexion.commit()

我没有很好地使用键,可能有错误。我在控制台中得到的错误是:

pymysql.err。ProgrammingError:(1064, "你的SQL语法有一个错误;检查与你的MySQL服务器版本对应的手册,以便在"ON DUPLICATE KEY UPDATE UserID = VALUES(UserID), VALUES('eyJhbGciOiJIUzI1NiJ9"附近使用正确的语法。E ' at line 1")

VALUES中的代码实际上是AccessToken而不是User_ID

知道我做错了什么吗?

如果使用SELECT语句来搜索用户的访问键呢?

如果不存在,执行INSERT语句:

INSERT INTO Tokens (AccessToken, RefreshToken, UserID) VALUES (%s, %s, %s)

如果没有,运行UPDATE语句:

UPDATE Tokens SET AcessToken=%s, RefreshToken=%s WHERE UserId=%s

最后,我用这个查询解决了这个问题:

INSERT INTO Tokens (userID, accessToken, refreshToken) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE accessToken = %s, refreshToken = %s;"
val = (User_ID, AccessToken, RefreshToken, AccessToken, RefreshToken)
cursor.execute(query, val)

相关内容

  • 没有找到相关文章

最新更新