Как лучше построить оператор SQL со значениями из фрейма данных? - PullRequest
0 голосов
/ 22 мая 2018

рассмотрим следующий оператор SQL:

q="SELECT H_ID, CREATION_DATE FROM HOTEL WHERE H_ID IN (700,701,702...)" 

значения в скобках должны исходить из фрейма данных:

df=pd.DataFrame({"H_ID":[701,702,703,704,705,706,707,708,709,710],"B":[0,0,0,0,0,0,1,1,2,2], "C":[4,3,3,3,2,2,2,1,1,2]})

на данный момент, что я делаю, это?

#convert H_ID column to a string separated by comma
my_ids = str(list(df["H_ID"].apply(lambda x : str(x)))).replace("[","").replace("]","")

и я добавляю его в свой запрос:

q="SELECT H_ID, CREATION_DATE FROM HOTEL WHERE H_ID IN ("+my_ids+")" 

Вопрос: есть ли лучший способ сделать это, избегая преобразования в строку?

1 Ответ

0 голосов
/ 22 мая 2018

Код:

import pandas as pd
import numpy

df=pd.DataFrame({"H_ID":[701,702,703,704,705,706,707,708,709,710],"B":[0,0,0,0,0,0,1,1,2,2], "C":[4,3,3,3,2,2,2,1,1,2]})
s = ', '.join(map(str, df['H_ID'].as_matrix()))
q = 'SELECT H_ID, CREATION_DATE FROM HOTEL WHERE H_ID IN ({})'.format(s)
print(q)

Выход:

SELECT H_ID, CREATION_DATE FROM HOTEL WHERE H_ID IN (701, 702, 703, 704, 705, 706, 707, 708, 709, 710)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...