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()