[問題] pyodbc用DataFrame當其中一個Table

作者: duncanfun (D.F)   2021-03-24 20:35:10
要怎麼讓Dataframe當其中一個Table,執行SQL查詢
使用情境大概是這樣
有一個裝我整理好的客戶資料的Excel,大概有幾百個人,內容大概是
客戶名稱 ID 聯絡人 聯絡人電話
Red 12 Amy #1234
.......
我想要在連線到資料庫,但是不更改或插入資料庫,把這些人的資料撈出來
我要怎麼讓這個Excel成為From的一個Table
import pyodbc
import pandas as pd
cnxn=pyodbc.connect('連線參數')
cursor=cnxn.cursor()
customer_xlsx=pd.read_excel(r'客戶資料_已整理.xlsx')
"""以下為SQL語法,像這樣把customer_xlsx當成一個Table"""
report="""
SELECT customer_xlsx.ID, CUSTOMER.ITEM, CUSTOMER.DATE
FROM CUSTOMER, customer_xlsx
WHERE customer_xlsx.ID=CUSTOMER.ID
AND customer_xlsx.聯絡人='Amy'
AND CUSTOMER.DATE>#2021/1/1#
"""
實際上當然會比這個再多更多條件,也會再交叉到其他資料庫內的Table
我想的解決方法是要讓pandas先把資料整理好
rule=customer_xlsx["聯絡人"]=="Amy"
filter=customer_xlsx[rule]
ID_excel="'"
i=0
while i<len(filter):
ID_excel=ID_excel+filter.iloc[i,1]+"','"
i+=1
ID_excel=ID_excel[:len(ID_excel)-2]
之後再把ID_excel丟到SQL裡面用In去找
但是這樣做感覺很繁瑣,而且單位會python語法也只有我,要推廣出去會有難度
之後如果發生更複雜的語法可能會遇到瓶頸
所以有辦法讓Dataframe成為pyodbc的一個Table,而且是在不動到資料庫的條件下撈出資
料嗎
作者: cuteSquirrel (松鼠)   2021-03-24 22:14:00
pandasql 套件比較接近你想做的事情用SQL語法去撈dataframe的資料https://pypi.org/project/pandasql/
作者: celestialgod (天)   2021-03-25 16:38:00
https://reurl.cc/e9n3pM How about temp table?create a temp table in db and join it withyour table阿沒看到不插入資料下....
作者: cuteSquirrel (松鼠)   2021-03-25 19:37:00
對阿,用介面去撈,不會動到原本公司內網的DB
作者: MAGICXX (逢甲阿法)   2021-03-26 22:47:00
撈出來的table存變數 然後再對這個變數做查詢?不然存本機csv再read_csv做查詢之類的?反正再複雜也沒關係 你就做個介面 給他們用就好 裡面再怎麼複雜 他們也不知道(?

Links booklink

Contact Us: admin [ a t ] ucptt.com