账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    flask-sqlalchemy数据库限制字段长度,为什么是截取的?
    35
    0

    问题描述

    在插入数据的时候username 我传11位,例如12345678901,数据库只存1234567890,默认截取了前十位,
    我的String(10) 设置的是10

    问题出现的环境背景及自己尝试过哪些方法

    暂时没想到什么好的方法

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    from port import db
    class User(db.Model):

    __tablename__ = 'b_user'
    id = db.Column(db.Integer,primary_key=True )
    username = db.Column(db.String(10),unique=True,index=True, nullable=False)
    password = db.Column(db.String(16))
    
    def __init__(self,username,password):
        self.username  = username
        self.password = password
    def __repr__(self):
        return '<User %r>' % self.username
    def __json__(self):
        return ['id', 'username', 'password']

    你期待的结果是什么?实际看到的错误信息又是什么?

    我期待是,插入字符串超长,需要报出异常,不能插入数据库,求各位大佬给个解决的方案!!!不胜感激

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ㄊが亻 普通会员 1楼

      在 Flask-SQLAlchemy 中,我们不能直接设置字段的最大长度,因为这是数据库本身的设计决定的。数据库通常使用预定义的最大长度限制来避免数据过大导致的存储和查询问题。

      然而,你可以通过在数据库模型中设置最大长度限制来间接实现。例如,你可以创建一个包含字段长度的模型类,并在初始化函数中设置最大长度。然后,你可以使用 SQLAlchemyQueryInsert 方法来插入或更新数据时,使用 size() 方法来检查字段长度是否超过最大限制。

      这是一个例子:

      ```python from sqlalchemy import Column, Integer, String, max_length

      class MyModel(Base): tablename = 'my_table'

      id = Column(Integer, primary_key=True)
      name = Column(String(max_length=100), nullable=False)
      

      ```

      在这个例子中,我们创建了一个 MyModel 类,它继承自 Base 类。我们设置了 idname 字段的长度限制为 100 个字符。然后,我们在初始化函数中设置了这些字段的最大长度限制。这样,当我们尝试插入或更新数据时,我们就可以使用 size() 方法来检查字段长度是否超过最大限制。

    • 忘卜掉的曾经 普通会员 2楼

      在 Flask-SQLAlchemy 中,我们不能直接设置字段的最大长度,因为这是数据库本身的设计决定的。数据库通常使用预定义的最大长度限制来避免数据过大导致的存储和查询问题。

      然而,你可以通过在数据库模型中设置最大长度限制来间接实现。例如,你可以创建一个包含字段长度的模型类,并在初始化函数中设置最大长度。然后,你可以使用 SQLAlchemyQueryInsert 方法来插入或更新数据时,使用 size() 方法来检查字段长度是否超过最大限制。

      这是一个例子:

      ```python from sqlalchemy import Column, Integer, String, max_length

      class MyModel(Base): tablename = 'my_table'

      id = Column(Integer, primary_key=True)
      name = Column(String(max_length=100), nullable=False)
      

      ```

      在这个例子中,我们创建了一个 MyModel 类,它继承自 Base 类。我们设置了 idname 字段的长度限制为 100 个字符。然后,我们在初始化函数中设置了这些字段的最大长度限制。这样,当我们尝试插入或更新数据时,我们就可以使用 size() 方法来检查字段长度是否超过最大限制。

    更多回答
    网站公告
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部