使用SqlAlchemy核心和更高级别的抽象

2024-04-19 16:11:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试使用SQLAlchemy的核心API作为通用数据库包装器的基础,该包装器将包含SELECT、INSERT、DELETE和UPDATE语句。它还将动态生成FROM和WHERE子句。我有许多不同的数据库,我想SQLAlchemy将被用于,但使用ORM或核心和指定所有这些数据库的具体列和表可能是相当麻烦的。你知道吗

SqlAlchemy的核心API非常健壮,但要构建查询,需要将不同的对象链接在一起,同时还要显式地声明表名和列名,例如:

select([table.c.col1]).where(table.c.col2==5)

值table、col1和col2是SQL Alchemy对象生成的表反射,我希望能够生成这种带有可变参数的命令,其中table可以是从'group'到'pet'到'teams'的任何列名称,如果可能的话,添加where子句。你知道吗

我所能想象的是:

query_results = self.query(columns=['col1', 'col2'], where=['col2 == 5'])

并以动态方式将其转换为前面的select()语句。这是否可以通过SQL炼金术实现?有没有包装器可以动态地使用CORE生成语句?你知道吗


Tags: 对象api数据库核心sqlsqlalchemytable动态