one*_*ece 6 postgresql sqlalchemy flask-sqlalchemy
出于测试目的,我在执行代码之前清除(删除)每个表。
for table in reversed(db.metadata.sorted_tables):
engine.execute(table.delete())
do_stuff()
Run Code Online (Sandbox Code Playgroud)
但是,新数据的id值从前一个id停止的地方开始:
第一次迭代:
id | value
-----+---------
1 | hi
2 | there
Run Code Online (Sandbox Code Playgroud)
第二次迭代(删除表,插入新数据):
id | value
-----+---------
3 | good
4 | day
Run Code Online (Sandbox Code Playgroud)
id删除表时有什么方法可以重置计数吗?
编辑:似乎我把它弄坏了,桌子现在根本没有清除
config.py
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:myPassword@localhost/myDatabase'
app.py
app = Flask(__name__)
app.config.from_pyfile('config.py')
db = SQLAlchemy(app)
models.py
from app import app, db
def clear():
for table in reversed(db.metadata.sorted_tables):
db.engine.execute('TRUNCATE TABLE ' + table.name + ' RESTART IDENTITY CASCADE')
Run Code Online (Sandbox Code Playgroud)
该表仍被添加到(使用db.session.add_all()和db.session.commit())。然而,clear()什么都不做。当我以postgres用户身份登录terminal并直接执行时TRUNCATE TABLE myTable RESTART IDENTITY CASCADE,它可以工作。
table.name给出正确的名称。这让我相信有什么问题db.engine.execute(),但这没有多大意义,因为db.session.add_all()有效
| 归档时间: |
|
| 查看次数: |
6308 次 |
| 最近记录: |