我正在使用Flask和SQL Alchemy构建一个带有sqlite3数据库引擎的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))
答案 0 :(得分:2)
可能是风格很差,但你可以这样做:
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()