怎么把DF数据导入mysql?

怎么把DF数据导入mysql?

img

import pymysql
import pandas
db = pymysql.connect(host='localhost', port=3306, user='root', password='', db='test')
cur = db.cursor()
sql = "INSERT INTO test_table (ts_code, trade_date, open, close) VALUES (%s,%s,%s,%s)"
cursor.execute(sql,(df1['ts_code'], df1['trade_date'], df1['open'], df1['close']))
db.commit()
cur.close()
db.close()

报错

ProgrammingError                          Traceback (most recent call last)
Input In [44], in <cell line: 4>()
      2 cur = db.cursor()
      3 sql = "INSERT INTO test_table (ts_code, trade_date, open, close) VALUES (%s,%s,%s,%s)"
----> 4 cursor.execute(sql,(df1['ts_code'], df1['trade_date'], df1['open'], df1['close']))
      5 db.commit()
      6 cur.close()
ProgrammingError: Cursor closed

我的wampserver正常运行,也在游览器打开了phpmysql

img

"INSERT INTO test_table (ts_code, trade_date, open, close) VALUES (%s,%s,%s,%s)"

你的指令是插入单行数据的指令

然后cursor.execute(sql,(df1['ts_code'], df1['trade_date'], df1['open'], df1['close']))中,你的 df1[xxx] 是 dataframe 的列,是多数据,直接就类型不匹配了

你按照 df 的行循环,依次插入吧

  • 以下回答由chatgpt基于相关博客总结生成:

    我使用Python作为处理DF数据的语言,工具包括pandas和sqlalchemy。如果要将DF数据导入到MySQL数据库中,需要使用相关的MySQL数据库驱动程序,例如pymysql。接下来,我将提供一个使用pandas和sqlalchemy将DF数据导入到MySQL数据库的示例代码:

    import pandas as pd
    from sqlalchemy import create_engine
    
    # 读取数据
    df = pd.read_csv('data.csv')
    
    # 连接到MySQL数据库
    db = 'mydb'
    user = 'root'
    password = 'mypassword'
    host = 'localhost'
    port = '3306'
    engine = create_engine(f'mysql+pymysql://{user}:{password}@{host}:{port}/{db}')
    
    # 创建新的表并将数据导入到该表中
    table_name = 'mytable'
    df.to_sql(table_name, engine, if_exists='replace', index=False)
    
    # 关闭连接
    engine.dispose()
    

    其中,df是要导入的数据,db是MySQL数据库名称,user是MySQL用户名,password是MySQL密码,host是MySQL服务器地址,port是MySQL端口号。create_engine函数用于创建连接对象,to_sql方法用于将数据导入到MySQL数据库中。if_exists参数表示如果表已经存在,是否覆盖该表。index参数表示是否将行索引导入到数据库中。最后,使用 dispose 方法关闭连接。如果在导入过程中遇到了任何错误,你可以提供更多的详细信息和错误信息,我会尽力帮助你解决问题。