【问题标题】:Flask-SQLAlchemy unique keyword not reflected in sqlite databaseFlask-SQLAlchemy 唯一关键字未反映在 sqlite 数据库中
【发布时间】:2021-01-05 22:05:22
【问题描述】:

我已经使用 Flask-SQLAlchemy 创建了这个模型,并将它与 sqlite 一起使用:


app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:///database.db"
db = SQLAlchemy(app)
class UserModel(db.Model):
    __tablename__ = "users"

    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String, nullable=False)
    username = db.Column(db.String, nullable=False, unique=True)
    password = db.Column(db.String, nullable=False)
    public_id = db.Column(db.String, nullable=False, default=str(uuid.uuid4()).replace("-", ""))

db.create_all()

但是unique 关键字似乎不起作用,我已经使用此代码创建了多个全新的数据库,并且数据库似乎没有注册该用户名需要是唯一的。我在这里遗漏了什么吗?

【问题讨论】:

    标签: python sqlite flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    它对我有用

    sqlite3 database.db
    SQLite version 3.28.0 2019-04-15 14:49:49
    Enter ".help" for usage hints.
    sqlite> INSERT INTO users (id, email, username, password, public_id) VALUES (1, 'a@a.com', 'a@a.com', 'a@a.com', '1');
    INSERT INTO users (id, email, username, password, public_id) VALUES (1, 'a@a.com', 'a@a.com', 'a@a.com', '1');
    sqlite> INSERT INTO users (id, email, username, password, public_id) VALUES (1, 'a@a.com', 'a@a.com', 'a@a.com', '1');
    Error: UNIQUE constraint failed: users.id
    sqlite> INSERT INTO users (id, email, username, password, public_id) VALUES (2, 'a@a.com', 'a@a.com', 'a@a.com', '1');
    Error: UNIQUE constraint failed: users.username
    

    我尝试使用 Flask 1.1.2 和 2.4.4

    【讨论】:

      猜你喜欢
      • 2020-02-17
      • 2017-09-20
      • 2016-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 2019-04-09
      相关资源
      最近更新 更多