惯例,先将重复的程序再抄一遍:
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String
from sqlalchemy.orm import sessionmaker
# 连接数据库
# 地址
HOSTNAME = '127.0.0.1'
# 数据库 几栋
DATABASE = 'selectClass'
# 端口 门牌号
PORT = 3306
# 用户名 密码
USERNAME = 'root'
PASSWORD = 'root'
DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}'.format(USERNAME,PASSWORD,HOSTNAME,PORT,DATABASE)
engine = create_engine(DB_URL)
# 都要继承这个函数生成的基类
Base = declarative_base(engine)
这段代码除了数据库变化了外,其余不需要进行改动
定义class,配置数据表:
class Article(Base):
__tablename__ = 'article1'
id = Column(Integer,primary_key=True,autoincrement=True)
title = Column(String(50))
# 倒序的
# __mapper_args__ = {
# 'order_by': -id
# }
def __str__(self):
return 'Article(title:%s)' % self.title
Base.metadata.create_all()
Session = sessionmaker(bind=engine)
session = Session()
代码方式批量生成数据:
for i in range(10):
article = Article(title='title%s' %i)
session.add(article)
session.commit()
article = session.query(Article).all()
# 显示所有
按照id排序并显示
article = session.query(Article).order_by(Article.id).all()
倒序:
article = session.query(Article).order_by(Article.id.desc()).all()
也可以使用 -Article.id来实现倒序
article = session.query(Article).order_by(-Article.id).all()
limit :限制查看个数
article = session.query(Article).order_by(-Article.id).limit(3).all()
从第2个查看:(注:这里的2是指id为3,偏移量为2,在1的基础上偏移2就是3)
article = session.query(Article).order_by(Article.id).limit(3).offset(2).all()
如果排序为倒序,则查看的是倒数第三个
article = session.query(Article).order_by(-Article.id).limit(3).offset(2).all()
切片操作:
article = session.query(Article).all()[2:5]
注:切片操作要在所有其他操作完成后进行
遍历所有可迭代元素代码:(因为查询到的article是一个可迭代元素,需要遍历)
for item in article:
print(item)