我正在使用flask做一个项目,我选择Flask-sqlalchemy来存储数据。数据库存储在本地:
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///manage.db'
我定义一个类:
class House(db.Model):
__tablename__ = 'house'
id: Mapped[int] = mapped_column(db.Integer, primary_key=True)
block: Mapped[str] = mapped_column(db.String, nullable=False)
number: Mapped[str] = mapped_column(db.String, nullable=False)
area: Mapped[int] = mapped_column(db.Integer)
测试时,我使用for循环向该数据库添加一些记录:
for i in range(0,100):
house= House(block='Springfield',number='8000',area=200)
db.session.add(house)
db.session.commit()
循环之后,本地文件“manage.db”大小变得更大。 然后我删除“house”表的所有记录:
db.session.query(House).delete()
db.session.commit()
表'house'现在是空的,但为什么本地文件'manage.db'大小没有减少?
删除 sqlite 中的数据只是将该空间标记为已删除,但并不总是真正清除该空间并基于它优化大小。请参阅https://sqlite.org/lang_vacuum.html