python - sqlalchemy.exc.DataError:(pymysql.err.DataError)(1406,“第 1 行的列‘密码’的数据太长”)
问题描述
def create_user(db: Session, user: UserCreate):
hashed_password= bcrypt.hashpw(user.password.encode('utf-8'), bcrypt.gensalt())
db_user= User(email=user.email, password=hashed_password, lname=user.lname, fname=user.fname)
print('---->', db_user)
db.add(db_user)
db.commit()
return db_user
@app.post('/api/users', response_model= User)
def signup(user_data: UserCreate, db: Session= Depends(get_db)):
user= get_user_by_email(db, user_data.email)
if user:
raise HTTPException(status_code=409,
detail="Email already registered")
signedup_user = create_user(db, user_data)
print("--------->", signedup_user)
return signedup_user
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, "Data too long for column 'password' at row 1") [SQL: INSERT INTO users (lname, fname, email, password) VALUES (%(lname )s, %(fname)s, %(email)s, %(password)s)] [参数:{'lname': 'stsdf', 'fname': 'swef', 'email': 'didou@gmail .com', 'password': b'$2b$12$nui9RJwoVkU.h6d9ASw6POLZhbn83YrwGKpsNvp.GlnsDa7X4VIqS'}](此错误的背景:http ://sqlalche.me/e/13/9h9h )
解决方案
包含此错误中涉及的任何代码是一个很好的做法。
但是,这行代码
hashed_password= bcrypt.hashpw(user.password.encode('utf-8'), bcrypt.gensalt())
生成的字符串(哈希)比您的模型可以容纳的更长。
您为密码属性指定的大小对于该哈希来说不够大。
推荐阅读
- javascript - 如果单击网格/表格的新行,则尝试删除 div
- python - 熊猫任何/所有似乎都没有返回正确的结果
- swift - 如何创建一个新的 macOS CorePlot 项目
- javascript - 引用“this”而不使用“this”
- mongodb - 嵌入式阵列文档中的 Morphia Mongodb 更新失败
- kubernetes - kube-dns 无法解析 Nodeport 类型的服务主机名(但 headless 可以)
- python - 未使用功能。为什么?
- sql - SQL 从结果中删除重复项
- loops - 如何找到依赖于外循环“i”的内循环的时间复杂度:
- python - 包含可变长度和逗号分隔的值字符串的 pandas 列如何堆叠成单独的值?