sql >> Database >  >> RDS >> PostgreSQL

Benoemde parameters in databasefuncties met SQLAlchemy

Dankzij de suggestie van Michael Bayer , kwam ik met een oplossing voor mijn eigen vraag:de truc is om te gebruiken De compiler van SQLAlchemy , en een paar goede ontsnappingen:

from psycopg2.extensions import adapt as sqlescape                          
import sqlalchemy                                                           
from sqlalchemy import select                                               
from sqlalchemy.ext.compiler import compiles                                
from sqlalchemy.sql.expression import ColumnClause                          


class MyFunc(ColumnClause):                                                 
    def __init__(self, *args, **kwargs):                                    
        self.kwargs = kwargs                                                
        super().__init__(*args)                                             


@compiles(MyFunc)                                                           
def compile_myfunc(element, compiler, **kw):                                
    s = ','.join("%s:=%s" % (k, sqlescape(v)) for k, v in element.kwargs.items())
    return "%s(%s)" % (element.name, s)                                     


def call(engine, func, **kwargs):                                           
    return engine.execute(select([MyFunc(func, **kwargs)]))                 


engine = sqlalchemy.create_engine('postgresql+psycopg2://[email protected]/mytest')
print(call(engine, 'test_f', a='a').scalar())                               
print(call(engine, 'test_f', b='b').scalar())                               



  1. Hoe database te gebruiken als back-up/failover in slaapstand?

  2. Hoe kan ik een partitie van de ene tabel in een andere in Oracle importeren?

  3. proberen om het aantal maanden te krijgen

  4. SQLcl om gegevens over te zetten van Oracle naar PostgreSQL of YugabyteDB 🅾🐘🚀