Уникальное ключевое слово Flask-SQLAlchemy, не отраженное в базе данных sqlite

#python #sqlite #flask #sqlalchemy #flask-sqlalchemy

#python #sqlite #flask #sqlalchemy #flask-sqlalchemy

Вопрос:

Я создал эту модель с помощью 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 ключевое слово, похоже, не работает, я создал несколько совершенно новых баз данных с этим кодом, и база данных, похоже, не регистрирует, что имя пользователя должно быть уникальным. Я что-то здесь упускаю?

Ответ №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