Вставьте определенные столбцы Dataframe в несколько таблиц MySQL - PullRequest
0 голосов
/ 16 июня 2019

Надеюсь, кто-то может просветить меня по этому вопросу.Я использую Python 3.7 с пандами и MySQL 8.0 CE (используя sqlalchemy и MySQLdb).

Я не уверен, как вставить определенные столбцы из одного кадра данных и вставить его в несколькоТаблицы MySQL в пределах одной и той же базы данных.

Исходный кадр данных (df.head):

      date      time    price   discount
0   11/6/2019   7:10     4.56     0.25
1   11/6/2019   7:15     5.01     0.26
2   11/6/2019   7:20     4.87     0.25
3   11/6/2019   7:25     4.54     0.23

Когда я использую свой код (приведенный ниже), он отправляет «суммарный» MySQLтаблица:

  date      time    price   discount
11/6/2019   7:10     4.56     0.25
11/6/2019   7:15     5.01     0.26
11/6/2019   7:20     4.87     0.25
11/6/2019   7:25     4.54     0.23

Конечная цель - вставить цену и скидку в отдельную таблицу MySQL в одну и ту же базу данных, например:

Таблица 1 MySQL - 'цена'

  date      time    price   
11/6/2019   7:10     4.56  
11/6/2019   7:15     5.01 
11/6/2019   7:20     4.87 
11/6/2019   7:25     4.54 

MySQL table 2 - 'discount'

  date      time   discount
11/6/2019   7:10     0.25
11/6/2019   7:15     0.26
11/6/2019   7:20     0.25
11/6/2019   7:25     0.23

Это мой оригинальный код .py, который работает, если мне нужно вставить весь массив данных в одну таблицу с именем 'summary':

import pandas as pd
import numpy as np
import MySQLdb
from sqlalchemy import create_engine

df = pd.read_csv('pricing_1.csv')
engine = create_engine('mysql+mysqldb://root:python@localhost:3306/testdb2', echo = False)

df.to_sql(name = 'summary', con=engine, if_exists = 'append', index = True)

Я пытался Google до публикации этого вопроса здесь, но, к сожалению, не смог найти ничего полезного - возможно, это связано с моим пониманием того, как работает MySQL?

Действительно признателен за то, что кто-то направит меня с некоторым URLстатьи или теория!Спасибо!

1 Ответ

0 голосов
/ 16 июня 2019
  1. Отдельно указывайте данные о скидке и цене.
  2. discount_df = df[['date','time','discount']]
  3. price_df = df[['date','time','price']]
  4. discount_df.to_sql(name = 'discount', con=engine, if_exists = 'append', index = True)
  5. price_df.to_sql(name = 'price', con=engine, if_exists = 'append', index = True)

Таким образом вы можете вставить данные в две таблицы.

...