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

पंडों के साथ mysql डेटाबेस तालिका में पंक्तियों को बदलें DataFrame

पांडा 0.24.0 के रिलीज के साथ, अब एक आधिकारिक तरीका to_sql . में एक कस्टम इंसर्ट विधि पास करके इसे प्राप्त करने के लिए समारोह।

मैं REPLACE INTO . के व्यवहार को प्राप्त करने में सक्षम था इस कॉल करने योग्य को to_sql . पर पास करके :

def mysql_replace_into(table, conn, keys, data_iter):
    from sqlalchemy.dialects.mysql import insert
    from sqlalchemy.ext.compiler import compiles
    from sqlalchemy.sql.expression import Insert

    @compiles(Insert)
    def replace_string(insert, compiler, **kw):
        s = compiler.visit_insert(insert, **kw)
        s = s.replace("INSERT INTO", "REPLACE INTO")
        return s

    data = [dict(zip(keys, row)) for row in data_iter]

    conn.execute(table.table.insert(replace_string=""), data)

आप इसे इस तरह पास करेंगे:

df.to_sql(db, if_exists='append', method=mysql_replace_into)

वैकल्पिक रूप से, यदि आप INSERT ... ON DUPLICATE KEY UPDATE ... का व्यवहार चाहते हैं इसके बजाय, आप इसका उपयोग कर सकते हैं:

def mysql_replace_into(table, conn, keys, data_iter):
    from sqlalchemy.dialects.mysql import insert

    data = [dict(zip(keys, row)) for row in data_iter]

    stmt = insert(table.table).values(data)
    update_stmt = stmt.on_duplicate_key_update(**dict(zip(stmt.inserted.keys(), 
                                               stmt.inserted.values())))

    conn.execute(update_stmt)

https://stackoverflow.com/a/11762400/1919794 को श्रेय संकलन विधि के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं विजुअल स्टूडियो 2010 में MySQL 5.1 से कैसे जुड़ूं?

  2. UNIX_TIMESTAMP () उदाहरण – MySQL

  3. क्या मैं मौजूदा MySql स्कीमा को प्रतिबिंबित करने के लिए स्क्वेरिल डेटा ऑब्जेक्ट स्वतः उत्पन्न कर सकता हूं?

  4. MySql के साथ जापानी भाषा के साथ खोज क्वेरी को कैसे हैंडल करें?

  5. क्वेरी पायथन में नाम से फ़ील्ड कैसे प्राप्त करें?