iT邦幫忙

1

Python & SQLALchemy 學習筆記_資料表的建立

紀錄了一下學習 SQLALchemy 的過程,如果有錯誤再請各位大神指教

一、套件安裝

pip install sqlalchemy
pip install pymysql # if need

註: sqlalchemy 會依賴於其他的 database module 進行操作
註: 若使用 sqlite 不需要另外安裝,python 內建就有包含

二、初始化

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()
engine_url = "<url>"
engine = create_engine(engine_url, echo=True)
  • 若將參數 echo 設為 True,會將所有執行的過程輸出到 cmd or terminal 上
  • 使用 sqlite 則 engine_url 為 .db 的檔案位置,範例如下:
    sqlite:///C:\\<path>\\test.db
  • 使用 mysql 則為需要設定使用者名稱、密碼、端口等,格式如下:
    mysql+pymysql://<username>:<password>@<host>:<port>/<database_name>

三、建立表結構

(一)、設定資料表結構

要特別注意 sqlalchemy 不允許修改表結構,如果需要修改的話,需要刪除重建

from sqlalchemy import Column
from sqlalchemy import Integer, String, DATETIME

class Test(Base):
    __tablename__ = "test"
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(55))
    time = Column(DATETIME)

註: Column 可以建立一個欄位
註: Integer, String, DATETIME, ...... 則為資料庫中常見的資料型態

(二)、建立資料表以及刪除資料表

def create_table():
    Base.metadata.create_all(engine)


def drop_table():
    Base.metadata.drop_all(engine)


if __name__ == '__main__':
    drop_table()
    create_table()

(三)、建立操作實體

from sqlalchemy.orm import sessionmaker

def create_session():
    Session = sessionmaker(bind=engine)
    session = Session()

    return session

四、目前為止的完整程式碼

  • main.py
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column
from sqlalchemy import Integer, String, DATETIME
from sqlalchemy.orm import sessionmaker

Base = declarative_base()
engine_url = "<url>"
engine = create_engine(engine_url, echo=True)


class Test(Base):
    __tablename__ = "test"
    id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(55))
    time = Column(DATETIME)


def create_table():
    Base.metadata.create_all(engine)


def drop_table():
    Base.metadata.drop_all(engine)


def create_session():
    Session = sessionmaker(bind=engine)
    session = Session()

    return session
    

if __name__ == '__main__':
    drop_table()
    create_table()
  • 實際執行 main.py 後所建立的資料表截圖
    https://ithelp.ithome.com.tw/upload/images/20211117/20144024k1XLKdgTbb.png

尚未有邦友留言

立即登入留言