Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在MySQL数据库中通过SQLAlchemy编写熊猫数据帧_Python_Mysql_Pandas_Dataframe_Sqlalchemy - Fatal编程技术网

Python 在MySQL数据库中通过SQLAlchemy编写熊猫数据帧

Python 在MySQL数据库中通过SQLAlchemy编写熊猫数据帧,python,mysql,pandas,dataframe,sqlalchemy,Python,Mysql,Pandas,Dataframe,Sqlalchemy,我正在尝试使用pandas将pandas数据帧写入mysql数据库。这非常适合我使用 对sql的访问 但是我想要的是使用sqlalchemy自己在表中编写日期、ticker和adj_close测试。不知怎的,我试着做了,但不起作用。使用以下命令: ins = test.insert() ins = test.insert().values(date=DataLevels['Date'], ticker=DataLevels['ticker'], adj_close=DataLevels['ad

我正在尝试使用pandas将pandas数据帧写入mysql数据库。这非常适合我使用

对sql的访问

但是我想要的是使用sqlalchemy自己在表中编写日期、ticker和adj_close测试。不知怎的,我试着做了,但不起作用。使用以下命令:

ins = test.insert()

ins = test.insert().values(date=DataLevels['Date'], ticker=DataLevels['ticker'], adj_close=DataLevels['adj_close'])
ins.compile().params
mysql_engine.execute(ins)
使用它,我收到以下错误消息:

(mysql.connector.errors.ProgrammingError)处理失败 pyformat参数;Python“series”无法转换为MySQL 键入[SQL:'插入测试(日期、标记、调整结束)值 (((日期)s,%(股票代码)s,%(调整结束)s)][参数:{'ticker':0
AAPL

一个人是否知道这是如何工作的?代码如下,但不包括上述代码部分:

import sqlalchemy as sqlal
import pandas_datareader.data as pdr
import pandas as pd

mysql_engine = sqlal.create_engine('mysql+mysqlconnector://xxx')
mysql_engine.raw_connection()

metadata = sqlal.MetaData()

test = sqlal.Table('test', metadata,
                                sqlal.Column('date', sqlal.DateTime, nullable=True),
                                sqlal.Column('ticker', sqlal.String(10), sqlal.ForeignKey("product.ticker"), nullable=True), 
                                sqlal.Column('adj_close', sqlal.Float, nullable=True),
                                ) 

metadata.create_all(mysql_engine) 

DataLevels = pdr.DataReader(['ACN','AAPL','^GDAXI'], 'yahoo', '2016-11-19', '2016-12-1')
DataLevels = pd.melt(DataLevels['Adj Close'].reset_index(), id_vars='Date', value_name='adj_close', var_name='minor').rename(columns={'minor': 'ticker'})

若要在一个
insert
中插入多行,请不要为每列传递
系列
,而是传递记录列表

test.insert().values(DataLevels[['Date', 'ticker', 'adj_close']].to_dict('records'))

感谢您的帮助。现在我收到以下错误消息:
无法添加或更新子行:外键约束失败(
financialanalysis
market\u price\u data
,constraint
market\u price\u data\u ibfk\u 1`外键(
ticker
)引用
产品
ticker
)[SQL:'INSERT INTO`这看起来像是一个数据完整性问题。您插入的行违反了架构中的外键约束。在不了解所有表关系的情况下,我真的无法提供更多帮助。感谢您的回答。我更新了上面提供错误消息的代码。它解决了。发现了我的问题一个表中缺少数据:)