SQLAlchemy 连接 seekdb 示例程序
本文将介绍如何使用 SQLAlchemy 连接 seekdb,实 现基本的数据库操作,包括创建表、插入数据、更新数据和查询数据等。
前提条件
- 您已安装 Python 3.x 和 pip。
- 您已安装 seekdb。
操作步骤
- 获取 seekdb 连接串。
- 安装 SQLAlchemy 库。
- 编写
test.py文件,填入数据库连接信息。 - 运行
test.py文件。
步骤一:获取 seekdb 连接串
联系 seekdb 部署人员或者管理员获取相应的数据库连接串。
mysql -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 seekdb 的连接 IP。应该被实际的 IP 替换,也可以使用本地 IP 及 127.0.0.1。$port:提供 seekdb 接端口。应该被实际的端口替换,默认是 2881,在部署 seekdb 时可自定义。$database_name:需要访问的数据库名称。$user_name:提供连接账户。格式:用户名。$password:提供账户密码。
更多连接串的信息,请参见 通过 MySQL 客户端连接 seekdb。
示例如下:
mysql -hxxx.xxx.xxx.xxx -P2881 -uroot -p****** -Dtest
步骤二:安装 SQLAlchemy 库
SQLAlchemy 是 Python 中最流行的 ORM(对象关系映射)库之一,它提供了 SQL 工具包和 ORM 系统,可以简化数据库操作。SQLAlchemy 支持多种数据库后端,包括 MySQL、PostgreSQL、SQLite 等。
打开命令提示符或 PowerShell 终端,运行以下命令,安装 SQLAlchemy 库。
pip install sqlalchemy mysqlclient
安装完成后,可以通过以下命令验证安装是否成功:
pip list | grep SQLAlchemy
信息
SQLAlchemy 是一个功能强大的 ORM 库,它提供了两种使用方式:Core 和 ORM。Core 提供了 SQL 表达式语言,而 ORM 提供了对象关系映射功能。本文示例主要使用 ORM 方式。
步骤三:编写 test.py 文件,填入数据库连接信息
根据 步骤一:获取 seekdb 连接串 中的信息编写 test.py 文件,填入数据库连接信息。
-
创建一个名为
test.py的文件。 -
在
test.py文件中填入以下内容,并根据实际情况修改数据库连接信息。test.py文件内容示例如下:from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 数据库连接信息
DB_USER = 'test_user001@mysql001'
DB_PASSWORD = '******'
DB_HOST = 'xxx.xxx.xxx.xxx'
DB_PORT = 2881
DB_NAME = 'test'
# 创建数据库连接 URL
DATABASE_URL = f"mysql+mysqldb://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
# 创建引擎
engine = create_engine(DATABASE_URL)
# 创建基类
Base = declarative_base()
# 定义模型
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50), nullable=False)
age = Column(Integer)
def __repr__(self):
return f"<User(id={self.id}, name='{self.name}', age={self.age})>"
# 创建表
Base.metadata.create_all(engine)
# 创建会话
Session = sessionmaker(bind=engine)
session = Session()
# 插入数据
new_users = [
User(name='John', age=20),
User(name='Lucy', age=25),
User(name='Tom', age=30)
]
session.add_all(new_users)
session.commit()
# 更新数据
user = session.query(User).filter_by(name='Lucy').first()
if user:
user.age = 26
session.commit()
# 查询数据
users = session.query(User).all()
for user in users:
print(user)
# 关闭会话
session.close()