Ich versuche, SQL-Einfügeanweisungen mithilfe von sqlalchemy wie folgt zu generieren.Mit einem Sonderzeichen wie einem Punkt in einem Python-Schlüssel
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}))
Dies gibt keyword cannot be expression
zurück. Der Zeitraum wie \.
zu entkommen, funktioniert auch nicht.
Eine Lösung, die ich gefunden habe, ist FooDOTBar instead of Foo.Bar
und dann ersetzen alle "DOT" mit "." In den generierten SQL-Dateien korrumpiert dies jedoch einige andere Daten und ist nicht optimal. Gibt es bessere Vorschläge, um von Grund auf damit umzugehen?
Warum Sie eine Periode in einem Parameternamen setzen wollen? Ist es so im Tabellenschema definiert? – FamousJameous
Ja, es ist traurig. Ich habe keine Kontrolle darüber. – user3683080