如何在SQLAlchemy ORM中处理带有保留字符的数据库列?

2024-09-30 10:30:33 发布

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

我对SQLAlchemy ORM有点陌生,我试图从一个视图中的列中选择并存储数据,该视图中的列名称为正斜杠。

数据库使用以下方式映射:

source_engine = create_engine("...")
base = automap_base()
base.prepare(source_engine, reflect=True)
metadata = MetaData(self.engine)
table_1 = Table("table_1", self.metadata, autoload=True)

第二个目标表的映射方式相同。

然后,我连接到这个数据库,并且我试图从列中选择要复制到不同数据库的信息:

^{pr2}$

但是,问题是视图中有一个名为“Slot/Port”的列

通过直接查询,可以执行以下操作:

^{pr3}$

但是在ORM中,您不能只键入:

^{pr4}$

或者

    newrow.'Slot/Port' = instance.'Slot/Port'

这是不正确的,下面的也不起作用:

    newrow.SlotPort = instance.SlotPort

AttributeError:“result”对象没有属性“SlotPort”

我无法控制如何在源数据库中命名列。

我发现SQLAlchemy文档通常是零碎的(只显示代码的小片段),而且很混乱,所以我不确定这是不是解决了。是否有办法绕过这个限制,或者如果列已经映射到一个没有斜杠的有效名称,或者是这样做的方法?


Tags: self视图数据库truesourcebasesqlalchemyport

热门问题