我正在尝试使用已注册的虚拟表作为SQL语句中的表,并使用到另一个数据库的连接。我不能只是将列转换为字符串并使用它,我需要表/数据帧本身在语句中工作,并与SQL语句中的其他表连接。首先,我正在Access数据库上尝试这一点。这就是我到目前为止所做的:
import pyodbc
import pandas as pd
import duckdb
conn = duckdb.connect()
starterset = pd.read_excel (r'e:\Data Analytics\Python_Projects\Applications\DB_Test.xlsx')
conn.register("test_starter", starterset)
IDS = conn.execute("SELECT * FROM test_starter WHERE ProjectID > 1").fetchdf()
StartDate = '1/1/2015'
EndDate = '12/1/2021'
# establish the connection
connt = pyodbc.connect(r'Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=E:\Databases\Offline.accdb;')
cursor = conn.cursor()
# Run the query
query = ("Select ProjectID, Revenue, ClosedDate from Projects INNER JOIN " + IDS + " Z on Z.ProjectID = Projects.ProjectID "
"where ClosedDate between #" + StartDate + "# and #" + EndDate + "# AND Revenue > 0 order by ClosedDate")
sfd
df = pd.read_sql(query, connt)
df.to_excel(r'TEMP.xlsx', index=False)
os.system("start EXCEL.EXE TEMP.xlsx")
# Close the connection
cursor.close()
connt.close()
我在excel工作表中有一个ID列表,试图用作数据库查询的过滤器。最终,这将形成同一表格中的几个标准:日期、收入和ID等。
老实说,我很惊讶我这么难做到这一点。在SAS中,使用PROC SQL非常简单,但我无法按照需要在SQL参数中获得数据帧接口。我是否犯了语法错误?
到目前为止,最常见的错误是“UFuncTypeError:ufunc“add”不包含具有签名匹配类型(dtype('<;U55')、dtype('<;U55'))->;dtype('<;U55'))的循环,但类型相同
看起来您正在将数据帧的内容推送到Access数据库查询中。我认为在熊猫身上没有一种天然的方法可以做到这一点。我使用的技术是特定于数据库供应商的,但我只是将文本字符串构建为CTE/WITH子句或临时表。 前任: “”“将我的\u数据作为( 选择“df中的原始文本”作为df列1,“df中的原始文本”作为df列2
联合所有 选择“df中的原始文本”作为df列1,“df中的原始文本”作为df列2
联合所有 ... ) [此处为您的原始查询] “”“
相关问题 更多 >
编程相关推荐