我在做一个项目;我必须更新一个表与动态值从一个脚本。我的表模式,这可能是错误的是:
数据库结构
我正在处理的表的结构
我试图插入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)