python使用SQLAlchemy操作MySQL
![star](https://csdnimg.cn/release/downloadcmsfe/public/img/star.98a08eaa.png)
SQLAlchemy 是 Python 中一个强大的 SQL 工具包和 ORM(对象关系映射)库,它允许开发者使用 Python 类定义数据库模式,并与 MySQL 这样的关系型数据库进行交互。ORM 提供了面向对象的方式来操作数据库,使得数据库操作更加简洁且易于理解。 在 Python 中使用 SQLAlchemy 操作 MySQL 首先需要确保已经安装了 `sqlalchemy` 和 `pymysql` 模块。`pymysql` 是 Python 的 MySQL 数据库驱动,而 `sqlalchemy` 提供了 ORM 和 SQL 工具包功能。 在 SQLAlchemy 中,我们通常会定义一个基类 `Base` 以及一系列与数据库表对应的 Python 类。例如,创建一个名为 `Users` 的类,其属性对应数据库表 `users` 的列。在这个例子中,`id` 是主键,`name` 和 `place` 是非空的 VARCHAR 字段,`age` 是 INTEGER 字段。 ```python from sqlalchemy.dialects.mysql import INTEGER, VARCHAR from sqlalchemy import Column, create_engine, declarative_base Base = declarative_base() class Users(Base): __tablename__ = 'users' id = Column(INTEGER, primary_key=True) name = Column(VARCHAR(256), nullable=False) age = Column(INTEGER) place = Column(VARCHAR(256), nullable=False) def __init__(self, id, name, age, place): self.id = id self.name = name self.age = age self.place = place ``` 接下来,通过 `create_engine` 函数创建数据库引擎,其中包含了数据库连接信息,如用户名、密码、主机名、端口号和数据库名称。设置 `echo=True` 可以让 SQLAlchemy 输出执行的 SQL 语句以便调试。然后调用 `Base.metadata.create_all()` 方法来根据定义的 Python 类创建对应的数据库表。 ```python from sqlalchemy.ext.declarative import declarative_base def init_db(): engine = create_engine( "mysql+pymysql://root:password@localhost:3306/orm_test", encoding="utf-8", echo=True ) Base.metadata.create_all(engine) print('Create table successfully!') ``` 数据插入是通过 SQLAlchemy 的 ORM 方式实现的。首先创建数据库引擎并使用 `sessionmaker` 定义一个 `DBSession` 类,然后实例化 `session` 对象。`session` 是 SQLAlchemy 中用于处理数据库会话的核心组件,可以添加、提交和回滚事务。 ```python from sqlalchemy.orm import sessionmaker def insert_data(): engine = create_engine("mysql+pymysql://root:password@localhost:3306/orm_test", encoding="utf-8") DBSession = sessionmaker(bind=engine) session = DBSession() # 插入单条数据 new_user = Users(id=1, name='Jack', age=25, place='USA') session.add(new_user) session.commit() # 插入多条数据 user_list = [ Users(id=2, name='Green', age=26, place='UK'), Users(id=3, name='Alex', age=27, place='Canada') ] session.add_all(user_list) session.commit() ``` 除了插入数据,SQLAlchemy 还支持查询、更新和删除操作。例如,查询所有用户: ```python def query_data(): session = DBSession() all_users = session.query(Users).all() for user in all_users: print(f"ID: {user.id}, Name: {user.name}, Age: {user.age}, Place: {user.place}") ``` 更新用户信息: ```python def update_data(): session = DBSession() user = session.query(Users).filter_by(id=1).first() if user: user.age = 26 session.commit() ``` 以及删除用户: ```python def delete_data(): session = DBSession() user = session.query(Users).filter_by(id=1).first() if user: session.delete(user) session.commit() ``` 通过 SQLAlchemy,Python 开发者可以方便地对 MySQL 数据库进行 CRUD 操作,无需编写原始的 SQL 语句。这使得代码更易于维护和理解,同时也简化了数据库操作的复杂性。在实际项目中,可以根据需求进一步扩展这些基本操作,例如添加条件查询、分页查询、关联查询等高级功能。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![avatar](https://profile-avatar.csdnimg.cn/default.jpg!1)
- 粉丝: 8
- 资源: 939
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
- 1
- 2
前往页