flask映射数据库

映射数据: 

from sqlalchemy import create_engine
from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 连接数据库
HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'demo0123'
USERNAME = 'root'
PASSWORD = '123456'
DB_URL = 'mysql+mysqlconnector://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
engine = create_engine(DB_URL)
Base = declarative_base(engine)

 

# orm操作
class Article(Base):
    # 定义表的名字
   
__tablename__ = 'article'
   
id = Column(Integer, primary_key=True, autoincrement=True)
    name = Column(String(50), nullable=False)


# 模型映射数据库
# Base.metadata.create_all()
# 数据的则删改查
article = Article(name='python')
# 保存数据库
session = sessionmaker(bind=engine)
session = session()
session.add(article)

# 添加多个数据

# session.add_all([article,article1])
# 提交数据库中
session.commit()

增删改查:

查: data = session.query(Article).all()

data = session.query(Article).filter_by(name='python').all()

data = session.query(Article).filter(Article.name=='python').all()

data = session.query(Article).filter_by(name='python').first()

data = session.query(Article).first()

# get() 传的id不存在  返回None
data = session.query(Article).get(2)

改:# 查询要修改的数据
article = session.query(Article).first()
article.name = "java学习"
session.commit()

session.rollback()

 

name 就是映射到数据库里面的字段名称,
比如:title = Column('fulltitle', String(50), nullable=False)

# 聚合函数

func.count 统计行的数量
func.avg  平均数
func.max  最大值
func.min 最小值
func.sum 求和

from sqlalchemy import func

result = session.query(func.count(Article.id)).first()

result = session.query(func.avg(Article.price)).first()

posted @ 2021-01-24 15:43  枫叶少年  阅读(207)  评论(0编辑  收藏  举报