【发布时间】:2021-11-14 01:54:21
【问题描述】:
上下文:我想将一个连接的数据框(我从个别股票数据中加入几个数据框)发送到 MySQL 数据库,但是,我似乎无法创建表并发送那里的数据
问题:当我运行此代码df.to_sql(name='stockdata', con=con, if_exists='append', index=False)(来源:Writing a Pandas Dataframe to MySQL)时,我不断收到此错误:pandas.io.sql.DatabaseError: Execution failed on sql 'SELECT name FROM sqlite_master WHERE type='table' AND name=?;': not all arguments converted during string formatting。
我也是 MySQL 新手,因此非常欢迎任何帮助!谢谢
from __future__ import print_function
import pandas as pd
from datetime import date, datetime, timedelta
import numpy as np
import yfinance as yf
import mysql.conector
import pymysql as pymysql
import pandas_datareader.data as web
from sqlalchemy import create_engine
import yahoo_fin.stock_info as si
######################################################
# PyMySQL configuration
user = '...'
passw = '...'
host = '...'
port = 3306
database = 'stockdata'
con.cursor().execute("CREATE DATABASE IF NOT EXISTS {0} ".format(database))
con = pymysql.connect(host=host,
port=port,
user=user,
passwd=passw,
db=database,
charset='utf8')
df.to_sql(name='stockdata', con=con, if_exists='append', index=False)
【问题讨论】:
-
该错误与 mysql 无关,您的代码启动了一个仅适用于 sqlite 的查询,因此将数据库连接传递给 pandas 数据框时出现问题。
-
我的猜测是您使用的是最新版本的 pandas,它需要 sqlalchemy 连接对象作为连接参数。
-
谢谢!现在工作:)
标签: python pandas sqlalchemy