PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

SQLAlchemy के साथ डेटाबेस फ़ंक्शंस में नामित पैरामीटर

माइकल बेयर के सुझाव के लिए धन्यवाद , मैं अपने स्वयं के प्रश्न के समाधान के साथ आया:चाल का उपयोग करना है SQLAlchemy का कंपाइलर , और कुछ उचित पलायन:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पोस्टगिस + बूस्ट ::ज्योमेट्री + सी ++

  2. PostgreSQL, पंक्ति अद्यतन करने में असमर्थ (पंक्ति स्तर सुरक्षा के साथ)

  3. दो प्राथमिक कुंजी को इंगित करने वाली विदेशी कुंजी कैसे प्राप्त करें?

  4. पीजी-वादे का उपयोग कर कनेक्शन पूल

  5. विंडोज़ में पोस्टग्रेस्क्ल श्रवण बंदरगाह कैसे बदलें?