當前位置:
首頁 > 知識 > python開發部署時新增資料庫中表的方法

python開發部署時新增資料庫中表的方法

在項目版本讓運維部署時,涉及到資料庫表的增加問題,想了一下,可以有四種方法

1.使用SQLAlchemy的db.create_all方法

# -*- coding:utf-8 -*-
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.sql import text

HOST = "127.0.0.1"
USER = "root"
PASSWD = ""
DB = "carrier_test"
CHARTSET = "utf8"

app = Flask(__name__,instance_relative_config = True)
#鏈接資料庫路徑
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://%s:%s@127.0.0.1:3306/%s?charset=%s" %(USER,PASSWD,DB,CHARTSET)
#如果設置成 True (默認情況),Flask-SQLAlchemy 將會追蹤對象的修改並且發送信號。這需要額外的內存, 如果不必要的可以禁用它。
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True
#如果設置成 True,SQLAlchemy 將會記錄所有 發到標準輸出(stderr)的語句,這對調試很有幫助。
app.config["SQLALCHEMY_ECHO"] = False
# 資料庫連接池的大小。默認是資料庫引擎的默認值 (通常是 5)。
app.config["SQLALCHEMY_POOL_SIZE"] = 6
db = SQLAlchemy(app)

class Table_one(db.Model):
__tablename__ = "table_one"

id = db.Column("id", db.Integer, primary_key=True, autoincrement=True)
com_name = db.Column("com_name", db.String(30), nullable=False)
com_about = db.Column("com_about", db.String(200), nullable=False)

def __repr__(self):
return "<table_one com_name %r>" % self.com_name
if __name__=="__main__":#創建表
db.create_all

2.使用MySQLdb進行新增表

import MySQLdb

HOST = "127.0.0.1"
USER = "root"
PASSWD = ""
DB = "carrier"
CHARTSET = "utf8"

db=MySQLdb.connect(HOST,USER,PASSWD,DB)
cursor=db.cursor

if __name__ == "__main__":

if cursor:
command_a = """CREATE TABLE `tea2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(128) DEFAULT NULL,
`na_medf` varchar(128) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;"""
cursor.execute(command_a)
db.commit
db.close

3.使用Flask-Migrate擴展遷移資料庫

安裝相關插件

$ pip install Flask-Migrate

文件名:migrate_create_table.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand

#初始化app
app = Flask(__name__)
app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:@127.0.0.1:3306/carrier?charset=utf8"
app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = True

db = SQLAlchemy(app)
#初始化migrate相關
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command("db", MigrateCommand)

class Tea(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
na_medf = db.Column(db.String(128))

if __name__ == "__main__":
manager.run

代碼寫好之後,運行此文件,配合相關命令進行資料庫更新

first:通過init命令來創建一個遷移庫,執行後會在文件同級目錄創建一個migrations文件夾,裡面存放了所有遷移腳本。

注意點: 如果需要重新執行此命令,需要刪除migrations文件夾,否則報文件夾已經存在錯誤 alembic.util.exc.CommandError: Directory migrations already exists

python migrate_create_table.py db init

secound:通過migrate命令創建自動遷移腳本,此時會在資料庫增加一張表(alembic_version),記錄migrate更新的版本號

python migrate_create_table.py db migrate

third:通過 upgrade命令更新到資料庫中

python migrate_create_table.py db upgrade

這時候打開資料庫,便可看到新增的表,以及alembic_version表中新增的版本號

注意點:1.在以後資料庫遷移更新中,不再需要初始化,所以跳過init命令

2.以上命令是在linux命令窗口中,在pycharm代碼編輯軟體中為

I.點擊 Edit Configurations

python開發部署時新增資料庫中表的方法

II.輸入 db **** 等命令

python開發部署時新增資料庫中表的方法

4.直接使用sql語句

類似於第二種,區別在於運維部署多了一個步驟

此四種方法,推薦使用第二種進行新增表,第三種更利於資料庫結構的回滾(使用 downgrade命令)。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 達人科技 的精彩文章:

httpclient連接池相關參數的坑
lambda表達式的學習
InnoDB關鍵特性之自適應hash索引
Android 基於 Speex 的高度封裝語音庫,0 耦合,沒三方jar包
echarts添加點擊事件

TAG:達人科技 |

您可能感興趣

python web開發-flask連接sqlite資料庫
iPhone資料轉移新方法、Apple Watch對講機功能
KooTeam新版本發布,增加 Mysql 資料庫支持
TiesNetwork宣布新的區塊鏈資料庫產品將於4月發布
開源資料庫中間件:Kingshard
Apple的雲資料庫FoundationDB現在開源
Oracle資料庫定時器Job
卧龍會:軟體Hibernate session開啟與資料庫物理連接的時間關係
thinkphp5連接oracle資料庫
python後台架構Django——連接讀寫mysql資料庫
python與 masql資料庫,從基本開始做起
資料庫系統概念中table/view/schema/index的關係
Intel Tiger Lake處理器出現在UserBenchmark資料庫中
Google宣布Cloud Firestore文檔資料庫新進展 覆蓋10個新區域
Zero Day Initiative披露了Windows JET資料庫0Day漏洞
完全託管的圖形資料庫服務Amazon Neptune上線
《Birthday Wonderland》設定資料集發售決定
Oracle 資料庫中enq:TX-index contention等待時間淺析
科學家開發出iDog資料庫
Gson+pulltorefer+資料庫+httpurlconnection+非同步(更新)