【问题标题】:Python Flask update tablePython Flask 更新表
【发布时间】:2020-04-26 15:31:50
【问题描述】:

这是我的第一个模型:

class Userauth(db.Model):
    __tablename__ = 'userauth'    

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique = True, nullable = False)
    password = db.Column(db.String(50), nullable = False)

在我的数据库中创建表后,我正在尝试注册或创建新用户,但出现此错误:

"Something went wrong: (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(50)"

我意识到我对密码进行了编码,使其超过 50 个字符,所以我从

更改了我的密码
password = db.Column(db.String(50), nullable = False)

password = db.Column(db.String(150), nullable = False)

但我仍然遇到同样的错误。当我检查我的数据库时,我的表没有将 char 值从 50 更改为 150。我已经使用 python manage.py db migrateupgrade 迁移和升级了我的数据库,并且没有错误但是为什么我的表没有改变?有什么简单的方法可以更改或更新我们在 Flask 中的表格吗? (我也使用 flask-sqlalchemy),谢谢。

【问题讨论】:

  • 显然您正在使用适用于 django 的迁移命令,但您使用的是烧瓶,应首先检查如何在烧瓶中迁移
  • 我在 manage.py 文件中使用了来自 flask_migrateMigrate, MigrateCommand

标签: python sql flask flask-sqlalchemy


【解决方案1】:

如果您尝试直接运行 SQL 命令会怎样。命令将用于 postgresql 之类的:

ALTER TABLE Userauth ALTER COLUMN password TYPE varchar(150);

您可以使用 Flask-SqlAlchemy db.session.execute 方法运行 SQL 查询。更多相关信息:How to execute raw SQL in Flask-SQLAlchemy app

或者,如果您可以访问您的数据库控制台,那就更容易了。这是一次性操作,因此无需将其包含在您的应用程序代码中。

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 2018-01-16
    • 2021-12-25
    • 2021-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多