データベース内のすべてのテーブルを削除したいdb
。私がしていることは、反復しdb.tables
て 1 つずつドロップすることだけです。ただし、一部のテーブルは無視されるため、削除されません。次に、すべてのテーブルが切り捨てられるように変更drop
しました。truncate
それで、何が問題なのdrop
ですか?
コードは次のとおりです。
コントローラー/admin.py:
def olddo_remove():
response.view = 'admin/do_remove.html'
l = []
k = []
for table_name in db.tables:
l.append(table_name)
db[table_name].drop()
#db[table_name].truncate()
return locals()
def do_remove():
l = []
k = []
for table_name in db.tables:
l.append(table_name)
for table_name in l:
k.append(table_name)
db[table_name].drop()
return locals()
ビュー/管理者/do_remove.html:
{{=l}}<br />{{=k}}
admin/olddo_remove にアクセスすると、
['auth_user', 'auth_membership', 'auth_event', 'client', 'data']
[]
admin/do_remove にアクセスすると、
['auth_user', 'auth_group', 'auth_membership', 'auth_permission', 'auth_event', 'auth_cas', 'client', 'product', 'data']
['auth_user', 'auth_group', 'auth_membership', 'auth_permission', 'auth_event', 'auth_cas', 'client', 'product', 'data']
olddo_remove でdrop
toを変更すると、出力は次のようになります。truncate
['auth_user', 'auth_group', 'auth_membership', 'auth_permission', 'auth_event', 'auth_cas', 'client', 'product', 'data']
[]
なんで?どうしたの?
これはクレイジーです!!
def test():
response.view = 'admin/do_remove.html'
l = db.tables
k = []
for table_name in l:
k.append(table_name)
db[table_name].drop()
return locals()
出力:
['auth_group', 'auth_permission', 'auth_cas', 'product']
['auth_user', 'auth_membership', 'auth_event', 'client', 'data']
そして、2 行目のテーブルのみが削除されました。