在python键中有一个特殊字符,例如句点

时间:2016-08-30 14:43:27

标签: python sqlalchemy

我试图像这样使用sqlalchemy生成sql insert语句。

def get_sql(self):
    """Returns SQL as String"""
    baz_ins = baz.insert().values(
        Id=self._id,
        Foo.Bar=self.foo_dot_bar,
    )
    return str(baz_ins.compile(dialect=mysql.dialect(),
                             compile_kwargs={"literal_binds": True}))

返回keyword cannot be expression。像\.一样逃避这段时间也不起作用。

我想出的一个解决方案是使用FooDOTBar instead of Foo.Bar然后替换所有" DOT"用"。"在生成的sql文件中,这会破坏其他一些数据,但并不是最佳的。有什么更好的建议可以从头开始处理这个问题吗?

2 个答案:

答案 0 :(得分:0)

还有.values的替代形式,您可以在其中传递dict

baz.insert().values({
    "Id": self._id,
    "Foo.Bar": self.foo_dot_bar,
})

答案 1 :(得分:0)

在您的查询中,values可以是assigned with dictionary。所以你可以这样做:

baz_ins = baz.insert().values({"Id": self._id, "Foo.Bar": self.foo_dot_bar})

查看insert文档了解更多选项