簡體   English   中英

如何使用 Flask + SQLAlchemy 重命名表中的列

[英]How to rename a column in a table with Flask + SQLAlchemy

我為我的卡車調度應用程序創建了兩個表:

class appts_db(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    carrier = db.Column(db.String(100))
    material = db.Column(db.String(10))
    pickup_date = db.Column(db.String(10))

class carriers_db(db.Model):
    carrier_id = db.Column(db.Integer, primary_key=True)
    carrier = db.Column(db.String(100))
    phone_number = db.Column(db.String(15))

如何在兩個表中將列運營商命名為運營商名稱,以更清楚地了解列包含的內容。 我嘗試使用命令提示符

>python3
>db.create_all()

但列名不會更新。 是否有一些我缺少的命令可以更新數據庫中的列名?

(1.) 這似乎是一個關於“如何遷移單個表?”的問題,兩次。 也就是說,任何適用於appts_db的答案也需要應用於carriers_db我沒有看到 FK 關系,所以我認為大多數技術解決方案都需要手動告知第二次重命名。

(2.) 有許多不錯的“版本我的模式”方法。 包括通常的 ruby-on-rails 方法,在這里,我推薦alembic 這需要一些時間來適應,但一旦實施,它可以讓您及時前滾/回滾,並且表模式將匹配當前簽出的源代碼的期望。 它特別擅長列重命名。

(3.) 你可以在這里做的最簡單的事情是一對 DROP TABLE 然后重新運行db.create_all() 現有表阻止 create_all 產生任何影響,但在 DROP 之后它會做你想要的。 當然,如果你關心現有的行,你會想在你太冒險之前把它們藏起來。

我最終使用DB Browser for SQLite (我之前下載過)並在“執行 SQL”選項卡中運行此代碼:

ALTER TABLE carriers_db
RENAME COLUMN carrier TO carrier_name;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM