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表已經被我們成功創建出來了,為了確保這是我們建立的表,我們在進入表看看是否和我們建立的一致
從上面看和我們建立的屬性一致,那麼我們已經成功建立了資料庫表。