作者duncanfun (D.F)
看板Python
标题[问题] pyodbc用DataFrame当其中一个Table
时间Wed Mar 24 20:35:10 2021
要怎麽让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://webptt.com/cn.aspx?n=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
1F:推 cuteSquirrel: pandasql 套件比较接近你想做的事情03/24 22:14
2F:→ cuteSquirrel: 用SQL语法去捞dataframe的资料03/24 22:14
我解释的不够清楚
以我的范例来说
FROM CUSTOMER, customer.xlsx
CUSTOMER 这个是在资料库里面的Table
customer.xlsx这个是我电脑里面的excel转出来的DataFrame
我希望的使用情境就是这样,FROM里面同时有资料库的档Table也有DataFrame
不过这个建议好像也可行,只要我先用pd.read_sql把Table都变成我的DataFrame,再用pandasql去执行就好,只是不知道效能怎样
5F:→ celestialgod: create a temp table in db and join it with03/25 16:39
6F:→ celestialgod: your table03/25 16:39
7F:→ celestialgod: 阿没看到不插入资料下....03/25 16:40
我不能从这个路径去动公司资料库里面的东西,管理人会杀了我,他只准我捞资料出来做分析统计
※ 编辑: duncanfun (42.74.57.85 台湾), 03/25/2021 19:15:10
8F:推 cuteSquirrel: 对阿,用介面去捞,不会动到原本公司内网的DB 03/25 19:37
9F:推 MAGICXX: 捞出来的table存变数 然後再对这个变数做查询?不然存本 03/26 22:47
10F:→ MAGICXX: 机csv再read_csv做查询之类的? 03/26 22:47
11F:→ MAGICXX: 反正再复杂也没关系 你就做个介面 给他们用就好 里面再怎 03/26 22:48
12F:→ MAGICXX: 麽复杂 他们也不知道(? 03/26 22:48