【发布时间】:2017-07-05 18:39:38
【问题描述】:
我正在尝试将数据帧写入 MySQL 表,但收到 (111 Connection refused) 错误。
我在这里遵循了接受的答案: Writing to MySQL database with pandas using SQLAlchemy, to_sql
答案代码:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
data.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)
...create_engine() 行正常工作,但 to_sql() 行失败并出现此错误:
(mysql.connector.errors.InterfaceError) 2003: Can't connect to MySQL server on 'localhost:3306' (111 Connection refused)
我如何连接到我的 MySQL 数据库/表并不真正相关,因此非常感谢您提供完全不同的答案,但鉴于 deprecation of the MySQL 'flavor' in pandas 0.20.2,将数据帧写入 MySQL 的正确方法是什么?
【问题讨论】:
-
您是否有任何其他关于连接被拒绝原因的详细信息?可能与 Python、Pandas 和 SQLAlchemy 完全无关
-
没有其他细节 - 但是我一直使用 MySQLdb 作为我的连接器到
read_sql()没有问题。会不会是读/写权限的区别? -
权限可能是它(例如,如果您只有读取权限)。您可以尝试使用其他界面(例如 MySQL Workbench 或 Sequel Pro)创建一个简单的表吗?
-
是的,我一直在创建数据库、表、写入表等,所有这些都使用 MySQLdb... 并使用
read_sql()读取。我有 root 访问权限,所以我应该可以写,但这可能是我设置调用的方式,以某种方式无法识别该访问权限。 -
@openwon - 毕竟,我意识到
to_sql()对于任何相关大小的数据集来说有多慢,我正在追逐LOAD DATA INFILE方法...
标签: python mysql pandas pandas-to-sql