sqlalchemy的基本使用

SQLAlchemy 1.4 版本的基本使用

from datetime import datetime
from urllib.parse import quote_plus

from sqlalchemy import Column, create_engine, Integer, String, DateTime, inspect
from sqlalchemy.orm import declarative_base, Session

Base = declarative_base()


def get_engine():
    ip = "192.168.124.85"
    port = 3306
    username = "root"
    password = "root"
    db_name = "demo"
    connection_params = f"mysql+pymysql://{username}:{quote_plus(password)}@{ip}:{port}/{db_name}"
    engine = create_engine(connection_params)
    return engine


class User(Base):
    __tablename__ = "user_info"

    id = Column(Integer, primary_key=True)
    name = Column(String(50))
    full_name = Column(String(128))
    age = Column(Integer)
    memo = Column(String(255))
    create_time = Column(DateTime, default=datetime.now)
    update_time = Column(DateTime, default=datetime.now)


if __name__ == "__main__":
    engine = get_engine()
    # 表不存在则创建
    insp = inspect(engine)
    table_name = User.__tablename__
    if not insp.has_table(table_name):
        print(f"{table_name} 表不存在")
        Base.metadata.create_all(engine)
        print(f"{table_name} 表已创建")
    # 测试添加数据
    user = User(name="ok", age=23)
    with Session(engine) as session:
        session.add(user)
        session.commit()

其中 Columndefault 是由 sqlalchemy 提供的,在插入数据的时候,由 sqlalchemy 提供这部分字段的值。
server_default 是由数据库提供的,使用 desc table_name 时,会看到这部分字段由默认值,在插入数据时,sqlalchemy 产生的 sql 中不提供这部分字段的值。

posted @ 2024-06-26 22:42  那个白熊  阅读(2)  评论(0编辑  收藏  举报