Flask網站輕鬆部署到免費主機Heroku(2) 清除資料

非夢nj發表於2018-07-15

vue2+Flask網站,輕鬆部署到免費主機Heroku - 簡書 http://www.jianshu.com/p/08fab8d4ee35

Paste_Image.png
Heroku免費資料庫能存放10000條資料rows,如果不小心超了,Dashboard --> 資料庫:會有提示

Rows:        10685/10000 (Write access revoked)
複製程式碼

如上顯示,我的免費網站 http://tianya.herokuapp.com,已經有10685條資料行了,訪問就受限了,那怎麼刪除已有資料,恢復訪問呢?不用怕,以下幾步就解決了:

1. 安裝Heroku CLI

https://devcenter.heroku.com/articles/getting-started-with-python#set-up https://oneclient.sfx.ms/Win/Direct/17.3.6943.0625/OneDriveSetup.exe

以下2a, 2b任選其一

2a. 呼叫python manage.py來刪除多餘資料行

還記得我們上一篇http://www.jianshu.com/p/08fab8d4ee35 裡的manage.py,這可是遠端管理應用的神器啊

  • 遠端開啟bash命令列 heroku run bash --app <你的APP名字>
  • 執行manage.py shell
PS H:\> heroku run bash --app tianya
Running bash on tianya... up, run.4914 (Free)
~ $ python manage.py shell

>>> app
<Flask 'app'>
複製程式碼
  • 刪除表格內的資料,這裡以Logs表格為例
>>> from app.models import Logs
>>> s = db.session
>>> s.query(Logs).count()
9989L
>>> s.query(Logs).filter(Logs.id>100).delete()
>>> s.commit()
>>> s.query(Logs).count()
100L
複製程式碼
  • 好了,多餘資料都刪除了,再檢視一下容量:
PS H:\> heroku pg --app tianya
=== DATABASE_URL, HEROKU_POSTGRESQL_BRONZE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 2/20
PG Version:  9.5.5
Created:     2016-10-18 06:16 UTC
Data Size:   20.5 MB
Tables:      11
Rows:        10685/10000 (Write access revoked) - refreshing
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      postgresql-adjacent-xxx
複製程式碼

怎麼還是超過10000啊?? 原因是,後臺正在重新整理,一般需要10分鐘以上,耐心等一會兒

  • 然後就正常了
PS H:\> heroku pg:info --app tianya
=== DATABASE_URL, HEROKU_POSTGRESQL_BRONZE_URL
Plan:        Hobby-dev
Status:      Available
Connections: 3/20
PG Version:  9.5.5
Created:     2016-10-18 06:16 UTC
Data Size:   20.5 MB
Tables:      11
Rows:        1459/10000 (In compliance)
Fork/Follow: Unsupported
Rollback:    Unsupported
Add-on:      postgresql-adjacent-xxx
複製程式碼

2b. 直接呼叫pg:psql運算元據庫

直接命令列heroku pg:psql --app tianya 就可以了,這裡就不演示了。

前提是需要本地安裝 Postgres,不然會有以下警告:

PS H:\> heroku pg:psql --app tianya
--> Connecting to postgresql-adjacent-41730
 !    The local psql command could not be located. For help installing psql, see
 !    https://devcenter.heroku.com/articles/heroku-postgresql#local-setup
複製程式碼

3.檢視有哪些table

table是在你的Flask model裡定義的,查原始檔即可。 另外,用命令列也可以。 先在Heroku Dashboard上查一下postreg URI(Database --> Settings --> View Credentials)

Paste_Image.png

from sqlalchemy import MetaData
m = MetaData()
from sqlalchemy import create_engine
engine = create_engine("postgresql://<URI>")
m.reflect(engine)
for table in m.tables.values():
    print(table.name)
    for column in table.c:
        print(column.name)
複製程式碼

如果覺得有幫助,請給個小小的贊~~

相關文章