将pandas数据帧保存到msql数据库时出错

时间:2016-11-17 11:58:06

标签: python python-2.7 python-3.x pandas

我在pandas dataframe df中有一个表。

enter image description here

我想把它写入数据库。所以我使用df.to_sql,但收到错误。 我正在使用MySQLdb。

import MySQLdb
conn = MySQLdb.connect(host="1xx.xxx.x.xxx", user="uname", passwd="123", db="dbname")
cursor = conn.cursor()

df.to_sql(con=conn, name='table_name', if_exists='replace', flavor='mysql')

但我收到错误:OperationalError: (1241, 'Operand should contain 1 column(s)')

为什么会发生这种情况的任何见解/解决方案?提前谢谢

1 个答案:

答案 0 :(得分:0)

也许你传递了一个错误的变量。您确定要将字符串传递给MySQL而不是列表吗?

编辑:我想你可以尝试这样做

import pandas as pd
import mysql.connector
from sqlalchemy import create_engine

col1 = 123, 676, 93
col2 = 3245, 35346, 32
frequency = 2, 84, 9

dataset = list(zip(col1,col2,frequency))

df = pd.DataFrame(data = dataset, columns=['col1', 'col2', 'frequency'])

engine = create_engine('mysql+mysqlconnector://[user]:[pass]@[host]:[port]/[schema]', echo=False)
df.to_sql(name='sample_table2', con=engine, if_exists = 'append', index=False)

您需要安装sqlalchemy(pip install sqlalchemy)并且必须从mysql website下载sqlconnector

告诉我你是否需要别的东西。