纪录了一下学习 SQLALchemy 的过程,如果有错误再请各位大神指教
一、套件安装
pip install sqlalchemypip install pymysql # if need
注: sqlalchemy 会依赖于其他的 database module 进行操作
注: 若使用 sqlite 不需要另外安装,python 内建就有包含
二、初始化
from sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_baseBase = 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 Columnfrom sqlalchemy import Integer, String, DATETIMEclass 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 sessionmakerdef create_session(): Session = sessionmaker(bind=engine) session = Session() return session
四、目前为止的完整程式码
main.pyfrom sqlalchemy import create_enginefrom sqlalchemy.ext.declarative import declarative_basefrom sqlalchemy import Columnfrom sqlalchemy import Integer, String, DATETIMEfrom sqlalchemy.orm import sessionmakerBase = 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 后所建立的资料表截图