每次提交新用戶時,我都想創建一個新的隨機用戶 ID。為此,我使用的格式是:USR-<token>令牌是由這個函數制作的:import stringimport secretsdef make_token(): set = string.ascii_letters+string.digits while True: token = ''.join(secrets.choice(set) for i in range(6)) if(any(c.islower() for c in token) and any(c.isupper() for c in token) and sum(c.isdigit() for c in token)>=3 ): break return token此函數將在此數據庫模型中調用:class User(db.Model): usrid = db.Column(db.String(10), primary_key=True, default="USR-{}".format(make_token())) usrnm = db.Column(db.String(20), unique=True, nullable = False)我希望令牌每次都是新的。但是現在如果我提交兩個用戶對象,它會給我一個Constraint Failed : Unique錯誤。另外,我正在使用 SQLite 進行測試,如果這有什么不同的話。該模型比這更大,但對于這個問題,我認為只有這些部分是相關的。
1 回答

森林海
TA貢獻2011條經驗 獲得超2個贊
我認為你需要將make_token
函數作為default
參數傳遞,而不是它的返回值。
所以你可以嘗試讓你的make_token
函數在字符串前面加上“USR-”:
# ... return "USR-" + token
然后將該函數作為default
參數傳遞:
usrid = db.Column(db.String(10), primary_key=True, default=make_token)
添加回答
舉報
0/150
提交
取消