python - Flask SqlAlchemy 有没有办法将表格大小限制为 n 行

标签 python flask sqlalchemy

我正在使用带有 sqlite3 数据库引擎的 Flask 和 SQL Alchemy 构建一个 python 应用程序。我需要将表格大小限制为 1000 行,当达到此限制时,应删除最旧的条目以为新条目腾出空间。就像下面的例子:

|  id |   uuid   |   name   |   type   |
________________________________________
|  1  |   78c0   |   Danny  |  chef    |
|  2  |   7966   |   Mike   |  welder  |
|  .  |   ...    |   ...    |  ...     |
|1000 |   ef1b   |   John   |  fireman |

在下一个 INSERT INTO 之后,表格应该如下所示:

|  id |   uuid   |   name   |   type   |
________________________________________
|  2  |   7966   |   Mike   |  welder  |
|  .  |   ...    |   ...    |  ...     |
|1000 |   ef1b   |   John   |  fireman |
|1001 |   7ce4   |   Fez    |  doctor  |

在我创建模型时或在配置文件中的某处,是否有实现此目的的方法?假设我的模型文件是:

class People(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    uuid = db.Column(db.String, unique=True, nullable=False)
    name = db.Column(db.String(120), nullable=False)
    type = db.Column(db.String(120))

最佳答案

可能是风格不佳,但你可以这样做:

class People(db.Model):
    ...
    timestamp = db.Column(db.DateTime, default=datetime.utcnow)
    ...

def insert_person(person):
    db.session.add(person)
    row_count = Person.query.count()
    if row_count > 1000:
        first_person = User.query.order_by(Person.timestamp.asc()).first()
        db.session.delete(first_person)
    db.session.commit()

关于python - Flask SqlAlchemy 有没有办法将表格大小限制为 n 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40970690/

相关文章:

python - 导入错误 : No module named sysconfig--can't get pip working

python - 如何使用 FirefoxProfile 或 FirefoxOptions 通过 Selenium 设置 Firefox 浏览器的窗口位置

python - 在 WSGI 实例之外访问 Pyramid 数据库

python - 老挝的正则表达式?

python - 当休息请求到达 flask 时如何更改元素的颜色(在 html 页面中)?

javascript - 国际化怎么走?

python - Flask Web App : (psycopg2. OperationalError)服务器意外关闭了连接

python - 如何使用 Sqlalchemy 创建序列并将该特定序列添加到表中?

mysql - 如何让flask-sqlalchemy的查询对象选择列(或说字段)?

python - 基于正则表达式拆分字符串