使用SQLAlChemy连接数据库
导入包
首先,导入创建数据库引擎的包。
from sqlalchemy import create_engine
编写数据库配置
SQLALCHEMY_DATABASE_URL = "mysql://root:123456789@127.0.0.1:3306/tortoise"
字段解释:
- mysql::这是数据库方言和驱动的名称。在本例中,我们使用的是 MySQL 数据库。
- root::这是连接数据库的用户名。
- 123456789: 这是连接数据库的密码。
- @127.0.0.1::这是数据库服务器的 IP 地址。在本例中,数据库服务器位于同一台机器上,所以我们使用了本地主机 IP 地址 127.0.0.1。
- 3306::这是数据库服务器的端口号。对于 MySQL 数据库,缺省端口号是 3306。
- /tortoise:这是数据库的名称。在本例中,我们将连接到名为 tortoise 的数据库。
创建数据库引擎
传入数据库配置连接,来创建数据库引擎。
# 创建数据库引擎
engine = create_engine(
SQLALCHEMY_DATABASE_URL,
)
创建测试连接
# 创建连接
with engine.connect() as connection:
rs = connection.execute(text('select * from user_account'))
print(rs)
res = rs.fetchall()
for r in res:
print(r)
输出:
<sqlalchemy.engine.cursor.CursorResult object at 0x1059b49a0>
(4, 'yan', 'xuecan')
(5, 'yan', 'pengbo')
(6, 'zhang', 'zhangsan')
(7, 'zhang', 'xiaoming')
(10, 'zhang', 'xin')
(14, 'li', 'ming')
(15, 'yao', 'zhetian')
(16, 'fan', 'sixian')
(17, 'test_name', 'test_fullname')
数据库表内容:
注意
在执行 SQL 语句时,必须加上 text
,否则会报以下错误sqlalchemy.exc.ObjectNotExecutableError: Not an executable object: 'xxxxxxx'
。因为你尝试执行一个字符串,而不是一个 SQLAlchemy 的查询对象。
如果你想执行原生的 SQL 语句,你需要使用 text
函数来构建一个可执行的 SQL 文本对象。