You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pandas的to_sql()写入MySQL时报SELECT name FROM sqlite_master错误如何解决

问题排查及解决方案

错误原因

  • 执行con.cursor().execute()时con对象尚未初始化,代码执行顺序错误
  • pandas to_sql方法不支持直接传入pymysql原生连接作为con参数,你虽已导入create_engine但未使用,导致pandas默认将数据库识别为sqlite,触发语法不兼容报错,这也是报错信息中出现sqlite相关系统表查询的核心原因
  • 导入语句存在拼写错误:mysql.conector应为mysql.connector,如未使用该库可直接删除该行导入

修复后代码

from __future__ import print_function
import pandas as pd
from datetime import date, datetime, timedelta
import numpy as np
import yfinance as yf
import pymysql
import pandas_datareader.data as web
from sqlalchemy import create_engine
import yahoo_fin.stock_info as si

######################################################
# 数据库配置
user = '...'
passw = '...'
host = '...'
port = 3306
database = 'stockdata'

# 创建符合pandas要求的SQLAlchemy引擎
engine = create_engine(f'mysql+pymysql://{user}:{passw}@{host}:{port}/{database}?charset=utf8')

# 执行建库操作
with engine.connect() as conn:
    conn.execute(f"CREATE DATABASE IF NOT EXISTS {database}")

# 写入数据,直接传入engine作为con参数
df.to_sql(name='stockdata', con=engine, if_exists='append', index=False)

补充说明

如果运行时出现编码相关报错,可将连接串中的charset=utf8改为charset=utf8mb4,兼容更多特殊字符。

内容的提问来源于stack exchange,提问作者user16845627

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 06:54:02