Python ORM SQLAlchemy

SQLalchemy 基本使用

  • 安装 SQLAlchemy
  • pip install SQLalchemy

使用实例

# coding: utf-8
from sqlalchemy import Column, DECIMAL, Enum, String, text
from sqlalchemy.dialects.mysql import BIT, INTEGER, TINYINT
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()


class Class(Base):
    __tablename__ = 'classes'

    id = Column(INTEGER(10), primary_key=True)
    name = Column(String(30), nullable=False)


class Student(Base):
    __tablename__ = 'students'

    id = Column(INTEGER(10), primary_key=True)
    name = Column(String(20), server_default=text("''"))
    age = Column(TINYINT(3), server_default=text("'0'"))
    height = Column(DECIMAL(5, 2))
    gender = Column(Enum('男', '女', '中性', '保密'), server_default=text("'保密'"))
    cls_id = Column(INTEGER(10), server_default=text("'0'"))
    is_delete = Column(BIT(1))
  • Demo.py
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from models import Student

# mysql 配置
DB_CONFIG = {
    'host': '127.0.0.1',    # localhost
    'port': 3306,
    'user': 'root',
    'passwd': 'psadasd123213',
    'db': 'test'
}

# 创建一个ORM 引擎, echo=True 表示是否打印SQL
engine = create_engine('mysql+pymysql://{user}:{passwd}@{host}:{port}/{db}'.format(**DB_CONFIG), echo=False)
# 创建 DBSession 类型:
Session = sessionmaker(bind=engine)
# 生成一个会话实例
session = Session()

# 查询数据
data = session.query(Student).filter_by().limit(20).offset(0).all()

# 逐行打印数据
for row in data:
    print(row.name)

  • 输出结果
小明
小月月
彭于晏
刘德华
黄蓉
凤姐
王祖贤
周杰伦
程坤
刘亦菲
金星
静香
郭靖
周杰

posted @ 2021-05-15 23:00  kitai  阅读(63)  评论(1)    收藏  举报