Mysql
 sql >> база данни >  >> RDS >> Mysql

ЗАМЕНЕТЕ редовете в таблицата на базата данни на mysql с pandas DataFrame

С пускането на pandas 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. Как да свържете множество бази данни, сървъри в mysql и заявка от двете таблици една от друга?

  2. къде е грешката в моя sql код?

  3. Създадена е нова променлива чрез изтегляне на стойност от MySQL таблица

  4. Как да направите уникално ограничение работи с NULL стойност в MySQL

  5. Цикъл от категория в подкатегория в PHP