[SQLAlchemy]查询数据
import pymysql
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import Session, DeclarativeBase
from urllib.parse import quote_plus as urlquote
# 使用pymysql作为MySQLdb
pymysql.install_as_MySQLdb()
# 指定连接的MySQL数据库
PASSWORD = 'root@Twitt3r.com'
DATABASE_URL = f"mysql://root:{urlquote(PASSWORD)}@10.105.212.1:3306/db"
# 创建引擎
engine = create_engine(DATABASE_URL)
# 基于引擎创建session
SessionLocal = sessionmaker(bind=engine)
# 实例化session对象,得到db对象
db: Session = SessionLocal()
# db使用只有需要关闭,避免占用资源
# db.close()
# 创建对象的基类:
class Base(DeclarativeBase):
pass
# 定义User对象:
class User(Base):
__tablename__ = "users" # 指定数据库中表的名字
id = Column(Integer, primary_key=True, autoincrement=True) # 定义id作为主键且自增
name = Column(String(255)) # 定义name字段,是一个string类型
password = Column(String(255)) # password,是一个string类型
# 人性化定制对象的打印输出
def __str__(self):
return f"id: {self.id}, name: {self.name}, password: {self.password}"
# 使用db和User来查询数据,查询出来的数据用来初始化User需要的属性,
# 即result是User的对象,它的每个属性值就是找出来的User表中每个字段的值。
# result: User = db.query(User).filter(User.id == 1).first()
# print(result)
# print(result.id, result.name, result.password)
# 返回所有符合的数据 all()
# result: User = db.query(User).filter(User.id >=3).all()
# print(result)
# 简化筛选参数
# result: User = db.query(User).filter_by(id=2).first()
# print(result)
# 直接返回对象
# result: User = db.query(User).get(2) # get(2), 表示查询主键id=2的数据
# print(result)
# 排序 order_by
# result: User = db.query(User).order_by(User.id).all()
# print([r.id for r in result])
# 分页
'''
- `offset(n)`指定过滤几行数据再开始查询
- `limit(n)`指定每次查询几条数据
'''
result: User = db.query(User).offset(0).limit(3).all()
print([r.id for r in result])
# 关闭db连接(重要)
db.close()
分类:
Python
标签:
SQLAlchemy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构