我试图像这样使用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文件中,这会破坏其他一些数据,但并不是最佳的。有什么更好的建议可以从头开始处理这个问题吗?
答案 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文档了解更多选项