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

<<:  Jquery/JS 使用Input 输入生日并限制年龄

>>:  IT Certifications Exam Preparation

Day23 - 使用 Kamiflex 生成 Flex Message

LINE Developers:https://developers.line.biz/zh-ha...

Day23运算子(JavaScript)

指定运算子(Assignment Operators) (x = y) : 将 y 值指定给 x 变...

表单处理 Object 里的 Array

今天来看看一个常见问题。 { first_name: 'chris', last_name: 'wa...

从零开始学3D游戏设计:自定义粒子效果

这是 Roblox 从零开始系列,效果章节的第三个单元,今天你将学会如何制作自己想要的粒子效果 Pa...

Day30 WebRTC 一对多连线

上一篇我们使用 addTransceiver 单向接收串流 ,但是却不能两个人一起接收,今天我们要来...