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

看板Python作者 (D.F)時間3年前 (2021/03/24 20:35), 3年前編輯推噓3(309)
留言12則, 3人參與, 3年前最新討論串1/1
要怎麼讓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,而且是在不動到資料庫的條件下撈出資 料嗎 -- 那個比較萌~ 1.在村中替自己洗披風的鄰家女孩 2.被偷看洗澡的仙女姐姐 3.賽前砍了自己比武招親對象的野蠻ㄚ頭 4.保護聖獸而害人從樹上摔死的異族少女 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.74.99.110 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1616589317.A.E72.html ※ 編輯: duncanfun (42.74.99.110 臺灣), 03/24/2021 20:36:21 ※ 編輯: duncanfun (42.74.99.110 臺灣), 03/24/2021 20:37:13

03/24 22:14, 3年前 , 1F
pandasql 套件比較接近你想做的事情
03/24 22:14, 1F

03/24 22:14, 3年前 , 2F
用SQL語法去撈dataframe的資料
03/24 22:14, 2F
我解釋的不夠清楚 以我的範例來說 FROM CUSTOMER, customer.xlsx CUSTOMER 這個是在資料庫裡面的Table customer.xlsx這個是我電腦裡面的excel轉出來的DataFrame 我希望的使用情境就是這樣,FROM裡面同時有資料庫的檔Table也有DataFrame 不過這個建議好像也可行,只要我先用pd.read_sql把Table都變成我的DataFrame,再用pandasql去執行就好,只是不知道效能怎樣

03/24 22:14, 3年前 , 3F

03/25 16:38, 3年前 , 4F
https://reurl.cc/e9n3pM How about temp table?
03/25 16:38, 4F

03/25 16:39, 3年前 , 5F
create a temp table in db and join it with
03/25 16:39, 5F

03/25 16:39, 3年前 , 6F
your table
03/25 16:39, 6F

03/25 16:40, 3年前 , 7F
阿沒看到不插入資料下....
03/25 16:40, 7F
我不能從這個路徑去動公司資料庫裡面的東西,管理人會殺了我,他只準我撈資料出來做分析統計 ※ 編輯: duncanfun (42.74.57.85 臺灣), 03/25/2021 19:15:10

03/25 19:37, 3年前 , 8F
對阿,用介面去撈,不會動到原本公司內網的DB
03/25 19:37, 8F

03/26 22:47, 3年前 , 9F
撈出來的table存變數 然後再對這個變數做查詢?不然存本
03/26 22:47, 9F

03/26 22:47, 3年前 , 10F
機csv再read_csv做查詢之類的?
03/26 22:47, 10F

03/26 22:48, 3年前 , 11F
反正再複雜也沒關係 你就做個介面 給他們用就好 裡面再怎
03/26 22:48, 11F

03/26 22:48, 3年前 , 12F
麼複雜 他們也不知道(?
03/26 22:48, 12F
文章代碼(AID): #1WMp85vo (Python)
文章代碼(AID): #1WMp85vo (Python)