zoukankan      html  css  js  c++  java
  • SQLAlchemy-Utils

    由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法。

    安装:

    pip3 install sqlalchemy_utils

    示例:

    from sqlalchemy.ext.declarative import declarative_base
    from sqlalchemy import Column
    from sqlalchemy import Integer, String
    from sqlalchemy import create_engine
    from sqlalchemy_utils import ChoiceType
    
    Base = declarative_base()
    
    
    class UserInfo(Base):
        __tablename__ = "userinfo"
    
        id = Column(Integer, primary_key=True)
        name = Column(String(16), index=True, unique=True, nullable=False, autoincrement=True)
        gender_choices = (
            (0, ""),
            (1, ""),
            (2, "保密")
        )
        gender = Column(ChoiceType(gender_choices, Integer()))
    
        __table_args__ = {
            "mysql_engine": "Innodb",
            "mysql_charset": "utf8",
        }
    
    
    def init_db():
        """根据类创建数据库表"""
        engine = create_engine(
            "mysql+pymysql://root:""@127.0.0.1:3306/sqlalchemy_db?charset=utf8",
            max_overflow=0,  # 超过连接池大小外最多创建的连接
            pool_size=5,     # 连接池大小
            pool_timeout=20, # 池中没有连接最多等待的时间,否则报错
            pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
        )
        Base.metadata.create_all(engine)
    
    
    def drop_db():
        """根据类删除数据库表"""
        engine = create_engine(
            "mysql+pymysql://root:""@127.0.0.1:3306/sqlalchemy_db?charset=utf8",
            max_overflow=0,
            pool_size=5,
            pool_timeout=20,
            pool_recycle=-1
        )
        Base.metadata.drop_all(engine)
    
    
    if __name__ == "__main__":
        drop_db()
        init_db()
    models.py
    from models import UserInfo
    from sqlalchemy import create_engine
    from sqlalchemy.orm import sessionmaker
    
    engine = create_engine(
        "mysql+pymysql://root:""@127.0.0.1:3306/sqlalchemy_db?charset=utf8",
        max_overflow=0,  # 超过连接池大小外最多创建的连接
        pool_size=5,     # 连接池大小
        pool_timeout=20, # 池中没有连接最多等待的时间,否则报错
        pool_recycle=-1  # 多久之后对线程池中的线程进行一次连接的回收(重置)
    )
    SessionFactory = sessionmaker(bind=engine)
    session = SessionFactory()
    
    ret = session.query(UserInfo).all()
    for row in ret:
        print(row.id, row.name, row.gender.value)
    # 1 pd 男
    # 2 pq 保密
    View Code
  • 相关阅读:
    Bellman-Ford 单源最短路径算法
    Prim 最小生成树算法
    Kruskal 最小生成树算法
    Kosaraju 算法检测有向图的强连通性
    Kosaraju 算法查找强连通分支
    不相交集合森林的启发式策略
    Union-Find 检测无向图有无环路算法
    redis的持久化方式RDB和AOF的区别
    Docker -v 对挂载的目录没有权限 Permission denied
    postgresql如何让主键自增
  • 原文地址:https://www.cnblogs.com/believepd/p/10372269.html
Copyright © 2011-2022 走看看