简体   繁体   中英

Is there a way to insert dataframe into mysql using pymysql?

I have this:

import pymysql
import pymysql.cursors
host = "localhost"
port=3306
user = "db"
password='pass'
db='test'
charset='utf8mb4'
cursorclass=pymysql.cursors.DictCursor
try:
    connection= pymysql.connect(host=host,port=port,user=user,password=passw,db=db,charset=charset,cursorclass=cursorclass)
    Executor=connection.cursor()
except Exception as e:
    print(e)
    sys.exit()

I tried using the pandas to_sql() , but it is replacing the values in the table with the latest one. I want to insert the values into the table using the Pandas, but I want to avoid the duplicate entries and if any then it should get passed.

It might be possible to pickle the dataframe, and insert it into a table under a column of type BLOB . If you go this way, you'd have to depickle the result returned by mysqld

EDIT: I see what you are trying to do now. Here is a possible solution. Let me know if it works!

# assume you have declared df and connection

records = df.to_dict(orient = 'records')

for record in records:
    sql = "INSERT INTO mytable ({0}) \
           VALUES ({1})".format(record.keys(), record.values())
    curs = connection.cursor()
    try:
        curs.execute(sql)
        curs.close()
    except:
        break        #handle/research the error

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM