0
我正在嘗試使用熊貓將一個熊貓數據框寫入mysql數據庫。這我使用在MySQL數據庫中通過SQLAlchemy寫熊貓數據框
to_sql
但我想要的是寫上日期,股票和對我自己使用的SQLAlchemy表測試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'系列'不能轉換爲類型[SQL:INSERT INTO test(date,ticker,adj_close)VALUE (%(date)s,%(ticker)s,%(adj_close)s)'] [參數:{ '股票':0
AAPL
是否硬骨素有線索怎麼能工作呢?該代碼是下面wothout上述代碼部分:
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'})
感謝您的幫助。現在我收到以下錯誤消息:'無法添加或更新子行:外鍵約束失敗('financialanalysis'.'market_price_data',CONSTRAINT'market_price_data_ibfk_1' FOREIGN KEY('ticker')REFERENCES'product'('ticker' ))[SQL:'INSERT INTO' – MCM
這看起來像數據完整性問題。您插入的行在您的模式中違反了外鍵約束。在不瞭解所有餐桌關係的情況下,我無法真正幫助更多。 –
感謝您的回答。我更新了上面提供錯誤信息的代碼。 – MCM