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

SqlAlchemy में अप्सर्ट करने के लिए पांडा का उपयोग कैसे करें

set_ पैरामीटर कॉलम नामों के साथ कुंजी के रूप में मैपिंग की अपेक्षा करता है और एक्सप्रेशन या अक्षर मान के रूप में , लेकिन आप मान के रूप में नेस्टेड शब्दकोशों के साथ मैपिंग पास कर रहे हैं, अर्थात df.to_dict(orient='dict') . त्रुटि "टाइप 'तानाशाह' को अनुकूलित नहीं कर सकती" SQLAlchemy का परिणाम है जो उन शब्दकोशों को Psycopg2 को "शाब्दिक" के रूप में पास कर रहा है।

क्योंकि आप VALUES क्लॉज का उपयोग करके एक INSERT में कई पंक्तियों को सम्मिलित करने का प्रयास कर रहे हैं, आपको excluded SET क्रियाओं में। बहिष्कृत एक विशेष तालिका है जो सम्मिलित की जाने वाली पंक्तियों का प्रतिनिधित्व करती है।

insert_statement = postgresql.insert(my_table).values(df.to_dict(orient='records'))
upsert_statement = insert_statement.on_conflict_do_update(
    index_elements=['id'],
    set_={c.key: c for c in insert_statement.excluded if c.key != 'id'})
conn.execute(upsert_statement)



  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. प्रत्येक तालिका के लिए अद्वितीय अनुक्रमों का उपयोग हाइबरनेट करना चाहिए?

  3. PostgreSQL में शामिल होने के तरीकों का अवलोकन

  4. मैं PostgreSQL पर चीनी में पूर्ण पाठ खोज कैसे कार्यान्वित करूं?

  5. पोस्टग्रेएसक्यूएल किसी दिए गए आईडी के लिए सबसे हाल की प्रविष्टि का चयन