📅  最后修改于: 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需要使用SQLAlchemy的create_engine
方法。此方法接受MySQL连接字符串作为参数,并返回一个引擎对象,用于访问特定的数据库。
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqldb://<user>:<password>@<host>:<port>/<dbname>')
在连接字符串中,user
和password
分别代表你的MySQL用户名和密码;host
和port
分别为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子句中指定要插入的数据。
除了使用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_book
的Book
对象,并将其添加到会话中。最后,我们使用commit
方法提交了创建操作。
除了添加新数据外,ORM还支持其他的CRUD操作,比如查询、修改和删除数据。这些操作都可以通过会话对象来实现,具体细节可以参考SQLAlchemy的官方文档。
本篇文章介绍了如何使用SQLAlchemy连接到MySQL数据库,并演示了使用SQL语句和ORM与MySQL进行交互的方法。MySQL是一个功能强大的数据库,而SQLAlchemy则提供了便捷的Python接口,使得操作MySQL变得更加简单和高效。如有疑问,欢迎在评论区中提出。