尝试使用 Flask SqlAlchemy event.listen.But 更改我的 table 中的自动递增起始值 event.listen.But 我遇到 table 不存在

Trying to change auto increment start value in my tables with Flask SqlAlchemy event.listen.But I am encountering table doesn't exist

models.py

#imports
class User(db.Model):
    __tablename__ = 'userstore'
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(20), unique=True)
    password = db.Column(db.String(128))
    role = db.Column(db.String(15))
    created_on = db.Column(db.TIMESTAMP, default=datetime.now())
    logged_in = db.Column(db.TIMESTAMP, nullable=True)

    def set_password(self, password):
        self.password = generate_password_hash(password)
    def check_password(self, password):
        return check_password_hash(self.password, password)

#Here i am trying to change autoincment vaue
event.listen(User.__table__,"after_create",db.engine.execute(""" ALTER TABLE userstore AUTO_INCREMENT = 100000001""")
)

Also tried to use DDL like

event.listen(User.__table__,"after_create", DDL(""" ALTER TABLE userstore AUTO_INCREMENT =100000001"""))

当使用 DDL 时,迁移 运行 没有任何错误,但 id 值仍然从 1 开始,这意味着上面 event.listen 内的 DDL 查询以某种方式未执行

app.py

#imports

from config import Config

app = Flask(__name__)
app.config.from_object(Config)
db = SQLAlchemy(app)
from models import User, Patient,MedicineDetails

migrate = Migrate(app, db)

#route codes

if __name__ == '__main__':
    app.run(debug=True)

Error after performing flask db init

qlalchemy.exc.ProgrammingError: (mysql.connector.errors.ProgrammingError) 1146 (42S02): Table 'hms.userstore' doesn't exist
[SQL:  ALTER TABLE userstore AUTO_INCREMENT = 100000001]
(Background on this error at: http://sqlalche.me/e/f405)

这个问题:

event.listen(User.__table__,"after_create",db.engine.execute(""" ALTER TABLE userstore AUTO_INCREMENT = 100000001"""))

db.engine.execute() 调用将立即 运行,而不是在事件触发时。

我相信正确的版本是您的第二个版本,它会在创建 table 时导致 SQL 语句变为 运行。

event.listen(User.__table__,"after_create", DDL(""" ALTER TABLE userstore AUTO_INCREMENT =100000001"""))

运行 flask db init 不会导致创建任何 table。您将需要使用 flask db migrate 创建迁移,然后使用 flask db upgrade 执行迁移。只有在那个时候事件才会触发。