我试图确保输入中至少包含 4 个字母数字字符,并且也允许使用下划线。
正则表达式教程有点超出我的理解,因为它讨论了断言以及匹配时的成功/失败。
^\w*(?=[a-zA-Z0-9]{4})$
Run Code Online (Sandbox Code Playgroud)
我的理解:
\w--> 字母数字+下划线
*--> 匹配前一个标记零次到无限次(所以,这意味着它可以是任何字母数字/下划线字符,对吗?)
(?=[a-zA-Z0-9]{4})--> 向前查看前面的字符,如果它们至少包含 4 个字母数字字符,那么我就很好。
显然我错了,因为 regex101 没有向我显示任何匹配项。
我有一个 API 入口点:
@app.get('/dealers_get_users/', response_model = schemas.SellSideUserId, status_code=200)
def getdata(db: database.SessionLocal = _Depends(database.get_db)):
result = {}
i = db.query(models.sellSideUser).all()
for dealer_users in i:
result[str(dealer_users.user_id)] = {
'user_name' : dealer_users.user_name,
'user_pass' : dealer_users.user_pass,
}
m = schemas.SellSideUserId(user_id=result)
return m
Run Code Online (Sandbox Code Playgroud)
从数据库传入的数据只有 3 个字段:user_id、user_name、user_pass
当我调用 api 时,我得到这个:
{
"user_id": {
"1": {
"user_name": "testname",
"user_pass": "testpass"
}
}
}
Run Code Online (Sandbox Code Playgroud)
好吧,酷 - 我得到了我的数据。但我仍在尝试了解这些模型是如何工作的,并且没有真正掌握如何移入或移出嵌套字典。
例如,我希望它看起来像这样:
{
"1": {
"user_name": "testname",
"user_pass": "testpass"
}
}
Run Code Online (Sandbox Code Playgroud)
但我不确定如何将“结果”变量传递到此类中 - 无论我做什么,都会遇到错误。
我的模型:
class SellSideUserId(_BaseModel):
user_id : dict
class Config: …Run Code Online (Sandbox Code Playgroud)