怎么把DF数据导入mysql?
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
"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 的行循环,依次插入吧
我使用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
方法关闭连接。如果在导入过程中遇到了任何错误,你可以提供更多的详细信息和错误信息,我会尽力帮助你解决问题。