1. 程式人生 > >Python學習筆記(2)通過sqlalchemy建立資料庫表

Python學習筆記(2)通過sqlalchemy建立資料庫表

在之前的學習筆記中講了如何通過sqlalchemy來連線資料庫,那麼以此為前提我們通過sqlalchemy來建立資料庫表,如果不知道的話請看Python學習筆記(1) 使用sqlalchemy連線mysql

# encoding: utf-8

from sqlalchemy import create_engine

HOSTNAME = "127.0.0.1"
PORT = "3306"
DATABASE = "first_sqlalchemy"
USERNAME = "root"
PASSWORD = "jiaojiao"

# dialect+driver://username:[email protected]
:port/database DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".\ format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE) # 連線資料庫 engine = create_engine(DB_URI)

declarative_base()方法返回的是一個基類,這個類放入model類中可以自行和model進行關聯,創建出我們需要的資料庫表

from sqlalchemy.ext.declarative import declarative_base

...
Base = declarative_base(engine)

前期的準備工作完成以後,我們就可以來學model類了

class Article(Base):
    __tablename__ = "article"
    id = Column(Integer,primary_key=True,autoincrement=True)
    title = Column(String(50),nullable=False)

1.首先作為一個數據庫表必須要有一個表名,在sqlalchemy中表名的定義為__tablename__

2.因為我們的資料庫表是一個二維表,所以我們在建立表的時候必須要定義每一個列是做什麼的:

    2.1Column()是申明一個列,Integer表示的是這個類的資料型別為int型別

    2.2primary_key則定義這個id為主鍵

    2.3autoincrement則申明這個id類的為自增長

3.同理我們再申明一個叫title的列,型別為char的可變字串型別,長度為50,nullable=False則申明這個列不能為null

Base.metadata.drop_all()
Base.metadata.create_all()

當我們通過Base類建立這個表時,那麼這張表會自動儲存在Base類中,所以我們可以通過Base.metadata.drop_all()來刪除通過Base類建立的所有表

同理我們也可以通過Base.metadata.create_all()來建立新表

我們來操作一下資料庫看看錶是否被我們建立(因為我是在Mac環境下執行,window的可能會有寫區別)

mysql -u root -p輸入密碼後我們進入mysql資料庫對資料庫進行操作

然後輸入 use XXX(資料庫名)

最後 show tables檢視一下是否有我們建立的表

article表已經被我們成功創建出來了,為了確保這是我們建立的表,我們在進入表看看是否和我們建立的一致

從上面看和我們建立的屬性一致,那麼我們已經成功建立了資料庫表。