2016-08-30 30 views
0

我試圖用sqlalchemy生成這樣的sql插入語句。有一個特殊的字符,如python密鑰中的句號

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文件中,這會破壞一些其他數據,但並不是最優的。有什麼更好的建議從頭開始處理這個問題?

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

爲什麼你試圖把在參數名稱的時期?它是如何在表模式中定義的? – FamousJameous

+0

是的,可悲的是。我無法控制這一點。 – user3683080

回答

0

,你在dict而不是通過有中.values的另一種形式。所以,你可以這樣做:

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

時退房insert文檔更多的選擇