SQLAlchemy,ORM的Python标杆!

嗨,Python的小伙伴们!今天咱们来了解 SQLAlchemy,这可是对象关系映射(ORM)里的超级标杆哦!它就像一座神奇的桥梁,能让我们用 Python 代码轻松地和数据库打交道,不用写复杂的 SQL 语句,就能完成数据的增删改查,快来一起探索吧!

一、什么是 SQLAlchemy?

SQLAlchemy是 Python 里超厉害的一个模块,用于实现对象关系映射。它就像一个翻译官,把 Python 里的类和对象,翻译成数据库里的表和记录。这样我们就可以用面向对象的思维来操作数据库,而不是直接和 SQL 语句纠缠啦。

二、安装 SQLAlchemy

安装 SQLAlchemy 很简单,就像给 Python 世界添加一个新玩具。在命令行里输入pip install sqlalchemy,等安装完成,我们就可以开始构建数据库连接啦。

小贴士:安装的时候要注意网络是不是通畅哦,如果安装出问题,看看报错信息,说不定能找到解决办法呢。

三、连接数据库(以 SQLite 为例)
go 复制代码
from sqlalchemy import create_engine

# 创建一个数据库引擎,这就像启动一辆连接数据库的汽车
engine = create_engine('sqlite:///example.db')

# 有了引擎,我们就可以和数据库交互啦
with engine.connect() as conn:
    print("成功连接到数据库!")

在这段代码里,import create_engine把创建引擎的工具引进来。create_engine('sqlite:///example.db')创建了一个连接到 SQLite 数据库example.db的引擎。with engine.connect() as conn建立连接,运行代码就能看到连接成功的提示啦。

四、定义数据模型(类)
go 复制代码
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

# 创建一个基类,这就像给我们要创建的数据库表模型打个基础
Base = declarative_base()

# 定义一个用户类,对应数据库里的用户表
class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# 有了这个类,就相当于有了数据库表的蓝图

这里,declarative_base()创建基类。User类继承自Base,里面的Column定义了表的列,就像设计数据库表的结构,id是主键,name和age是其他列。

五、创建表
go 复制代码
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///example.db')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# 创建所有表,这就像按照蓝图建造房子
Base.metadata.create_all(engine)

在这个代码块里,Base.metadata.create_all(engine)根据我们定义的类(表蓝图)在数据库里创建对应的表。如果数据库不存在,会自动创建哦。

六、插入数据
go 复制代码
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///example.db')
Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

# 创建一个会话,这就像打开一个和数据库交流的通道
Session = sessionmaker(bind=engine)
session = Session()

# 创建一个用户对象
new_user = User(name='橙子', age=25)

# 把用户对象插入到数据库,就像把东西放进仓库
session.add(new_user)
session.commit()

这里,sessionmaker(bind=engine)创建会话类,session实例化会话。new_user = User(name='橙子', age=25)创建一个用户对象,session.add(new_user)添加到会话,session.commit()真正把数据插入数据库。

七、实际应用场景

SQLAlchemy 可有用啦!在开发 Web 应用时,比如用 Flask 或者 Django,它能方便地处理数据库操作,存储用户信息、文章内容等。在数据处理项目里,如果要把数据存储到数据库,它也能高效地完成任务,就像一个可靠的数据库管家。

八、练习题
  1. 按照上面的例子,再定义一个新的类(比如 Product 类,有产品名称和价格列),然后创建表并插入一条数据。

  2. 查询刚才插入的用户数据(根据名字或者其他条件),并打印出来。

今天的 Python 学习之旅就到这里啦!记得动手敲代码。祝大家学习愉快,Python 学习节节高!

相关推荐
星夜离尘563 小时前
MATLAB 工程实验:不等间隔流量积分,先把缺口与覆盖率说清楚
开发语言·matlab·时间戳·数据质量·数值积分
happylifetree3 小时前
Python70:核心语法-函数进阶-案例2
python
Ai-_Man3 小时前
Meta Muse还是不可以导出左侧所有对话,只能点进去单条内容导出,方法不对吗?
开发语言·人工智能·ai·小程序·c#·1024程序员节
梓豪csd3 小时前
消息订阅中心:谁该收到哪条通知
java·开发语言·人工智能·低代码·自动化·1024程序员节
王中阳Go3 小时前
两个入口答案不一致先别调模型:6 行入口口径对账表(附脚本)
人工智能·后端·python·大语言模型·1024程序员节
BK贝壳3 小时前
bool-hybrid-array 落盘我只认 .bha:用 Create_BHA / Ask_BHA 做布尔数组序列化
数据结构·python·numpy·1024程序员节
学逆向的4 小时前
C 枚举变量
c语言·开发语言·网络安全
Sakura_j_h_4 小时前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
不脱发的程序猿5 小时前
纳指ETF量化策略
数据库·人工智能·1024程序员节
supabc1235 小时前
欧盟电子发票(XRechnung/Peppol/ZUGFeRD)踩坑记:用 Python 不装 Java 跑官方校验规则
xml·python·开源·电子发票·1024程序员节