📜  mysql 与 sqlalchecmy 的连接 - SQL (1)

📅  最后修改于: 2023-12-03 15:03:05.386000             🧑  作者: Mango

MySQL与SQLAlchemy的连接 - SQL

MySQL是一个流行的开源关系型数据库管理系统。SQLAlchemy则是一个Python SQL工具包和 ORM(对象关系映射)库,它提供了一种将数据库中的关系转换为Python对象的方法。本篇文章将介绍如何使用SQLAlchemy来连接MySQL数据库。

安装

首先,你需要安装MySQL和 SQLAlchemy。安装MySQL的方法因操作系统而异,可以参考官方文档:https://dev.mysql.com/doc/。安装SQLAlchemy的方法可参考其官方文档:https://docs.sqlalchemy.org/en/14/intro.html#installation。

连接到MySQL

连接到MySQL需要使用SQLAlchemy的create_engine方法。此方法接受MySQL连接字符串作为参数,并返回一个引擎对象,用于访问特定的数据库。

from sqlalchemy import create_engine

engine = create_engine('mysql+mysqldb://<user>:<password>@<host>:<port>/<dbname>')

在连接字符串中,userpassword分别代表你的MySQL用户名和密码;hostport分别为MySQL服务器的主机名和端口号;dbname代表要访问的数据库的名称。另外,mysql+mysqldb指定了需要连接到MySQL数据库。

进行操作

连接成功后,你可以使用engine.execute方法执行SQL语句。比如,你可以查询所有的表:

result = engine.execute("SHOW TABLES;")
for row in result:
    print(row)

你也可以通过适当的SQL语句插入、更新和删除数据库中的数据。这里举一个插入数据的例子:

engine.execute("INSERT INTO books (title, author, num_pages) VALUES (%s, %s, %s);", "The Great Gatsby", "F. Scott Fitzgerald", 180)

这条语句向名为books的表中插入一条新数据。你可以在VALUES子句中指定要插入的数据。

ORM

除了使用SQL语句与MySQL交互外,你还可以使用SQLAlchemy的ORM来执行CRUD(创建、读取、更新、删除)操作。ORM允许你以Python对象的方式操作数据库,而不必编写原始的SQL查询。

首先,你需要定义一个映射器(Mapper)。映射器指定了数据库表、Python类和两者之间的映射关系。比如,假设你的数据库中有一张名为books的表,你可以创建一个映射器来指定此表如何映射到Python类:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Book(Base):
    __tablename__ = 'books'
    id = Column(Integer, primary_key=True)
    title = Column(String)
    author = Column(String)
    num_pages = Column(Integer)

这里,我们使用SQLAlchemy的declarative_base函数创建了一个基类,它允许我们定义一个Python类来表示数据库表。Book类继承自此基类,并通过__tablename__属性指定了它代表的表名。然后,我们声明了三列数据:id(一个自增的整数)、title(一个字符串)和num_pages(一个整数)。

一旦定义了映射器,你就可以像操作普通的Python对象那样操作数据库了。比如,下面是如何添加一本新书的示例:

from sqlalchemy.orm import sessionmaker

Session = sessionmaker(bind=engine)
session = Session()

new_book = Book(title='The Great Gatsby', author='F. Scott Fitzgerald', num_pages=180)
session.add(new_book)
session.commit()

这里,我们首先使用SQLAlchemy的sessionmaker函数创建了一个会话。会话充当了一个中间层,可以跟踪对象的状态,并将其同步到数据库中。然后,我们创建了一个名为new_bookBook对象,并将其添加到会话中。最后,我们使用commit方法提交了创建操作。

除了添加新数据外,ORM还支持其他的CRUD操作,比如查询、修改和删除数据。这些操作都可以通过会话对象来实现,具体细节可以参考SQLAlchemy的官方文档。

总结

本篇文章介绍了如何使用SQLAlchemy连接到MySQL数据库,并演示了使用SQL语句和ORM与MySQL进行交互的方法。MySQL是一个功能强大的数据库,而SQLAlchemy则提供了便捷的Python接口,使得操作MySQL变得更加简单和高效。如有疑问,欢迎在评论区中提出。