#coding=utf-8from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
USER ='root'
PWD ='root'
HOST ='127.0.0.1'
PORT =3306
DATA_BASE ='flask_db'
DB_URL =f'mysql+pymysql://{USER}:{PWD}@{HOST}:{PORT}/{DATA_BASE}'# 创建一个引擎
engine = create_engine(DB_URL)
Base = declarative_base(engine)
Session = sessionmaker(engine)
main.py:
#coding=utf-8from cgi import print_exception
from turtle import title
from db_utils import Base,Session
from sqlalchemy import Column,Integer,Float,String,Text,and_,or_
from random import randint
from uuid import uuid4
classArticle(Base):
__tablename__ ='t_article'id= Column(Integer,primary_key=True,autoincrement=True)
title = Column(String(50),nullable=False)
price = Column(Float,nullable=False)
content = Column(Text)def__repr__(self)->str:returnf'<Article(title:{self.title} price:{self.price} content:{self.content})>'defcreate_data():with Session()as session:for i inrange(10):if i%2==0:
art = Article(title=f'title{i+1}',price=randint(0,100),content=uuid4())else:
art = Article(title=f'TITLE{i+1}',price=randint(0,100))
session.add(art)
session.commit()defquery_data():with Session()as s:
art = s.query(Article).filter_by(id=3).first()print(art)defquery_data_equal():with Session()as s:
art = s.query(Article).filter(Article.id==2).first()print(art)defquery_data_not_equal():with Session()as s:
art = s.query(Article).filter(Article.title !='title6').all()for x in art:print(x)defquery_data_like():with Session()as s:
art = s.query(Article).filter(Article.title.like('title%')).all()for x in art:print(x)defquery_data_in():with Session()as s:
art = s.query(Article).filter(Article.title.in_(['title3','title6','title9'])).all()for x in art:print(x)defquery_data_not_in():with Session()as s:
art = s.query(Article).filter(~Article.title.in_(['title3','title6','title9'])).all()for x in art:print(x)defquery_data_null():with Session()as s:
art = s.query(Article).filter(Article.content ==None).all()for x in art:print(x)defquery_data_not_null():with Session()as s:
art = s.query(Article).filter(Article.content !=None).all()for x in art:print(x)defquery_data_and():with Session()as s:# art = s.query(Article).filter(Article.content == None,Article.price>40).all()
art = s.query(Article).filter(and_(Article.content ==None,Article.price>40)).all()for x in art:print(x)defquery_data_or():with Session()as s:
art = s.query(Article).filter(or_(Article.content ==None,Article.price>40)).all()# art = s.query(Article).filter(Article.title == 'title5' or Article.price>40).all()for x in art:print(x)if __name__ =='__main__':# Base.metadata.create_all()# create_data()# query_data_equal()# query_data_not_equal()# query_data_like()# query_data_in()# query_data_not_in()# query_data_null()# query_data_not_null()# query_data_and()
query_data_or()