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

PostgreSQL की INSERT...ON CONFLICT (UPSERT) सुविधा का उपयोग कैसे करें Flask_sqlalchemy के साथ?

यह पता चला है कि आप db.session . पर निचले स्तर के स्टेटमेंट को निष्पादित कर सकते हैं . तो समाधान कुछ इस तरह दिखता है:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.dialects.postgresql import insert as pg_insert

app = Flask(__name__)
db = SQLAlchemy(app)

class MyTable(db.Model):
    id = db.Column(UUID, primary_key=True)
    data = db.Column(db.String)

    def __init__(self, _id, *args, **kwargs):
        self.id = _id
        self.data = kwargs['data']

    def as_dict(self):
        return {'id': self.id, 'data': self.data}

    def props_dict(self):
        d = self.as_dict()
        d.pop('id')
        return d

relation = MyTable(id=1, data='foo')
statement = pg_insert(MyTable)\.
    values(**relation.as_dict()).\
    on_conflict_do_update(constraint='id',
                          set_=relation.props_dict())

db.session.execute(statement)
db.session.commit()

as_dict() और props_dict() मेरे मॉडल वर्ग में विधियां मुझे आने वाले HTTP अनुरोध से अवांछित गुणों को फ़िल्टर करने के लिए कन्स्ट्रक्टर का उपयोग करने की अनुमति देती हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. psycopg2 में डाली गई कई पंक्तियों की आईडी प्राप्त करना

  2. प्रदर्शन निगरानी और ऑडिटिंग PostgreSQL - शीर्ष संसाधन

  3. समान शब्दों के लिए Postgresql पूर्ण पाठ खोज

  4. सीक्वेलाइज़ माइग्रेशन टेबल क्यों बनाते हैं लेकिन मॉडल डेटाबेस से कनेक्ट नहीं हो सकते हैं

  5. पोस्टग्रेज में लॉक रखने वाली क्वेरी का पता कैसे लगाएं?