我是Python的新手,任何建议或链接都会有帮助。
我创建了两个python脚本- Main.py,它调用SQLcon.py。
SQLcon.py只创建与server的连接,并基于多个查询下载数据。后来,
Main.py代码从excel文件中读取/创建熊猫数据文件,这些文件由SQLcon下载并进行计算等。
SQLcon.py中的SQL连接和查询的文件具有如下的主要结构
问题:
( A)完成了相当多的查询,创建了相当多的临时文件。
)我不想将与SQL相关的代码保存在主文件中。
想要的结果:
我希望在主文件中使用dfX = pd.read_sql_query(qryX, engine)
(或类似的),并去掉保存/读取excel文件的部分。另外,-在所有这些查询期间保持一个连接是很好的,因为多个重新连接会减慢代码的速度。
我不知道怎么开始..。考虑将主SQL连接放到函数中,然后从main .但它会产生多个重新连接.
import sqlalchemy as sa # and other imports
load_dotenv()
# .env passwords and etc.
'''...'''
# creating SQL connection via sqlalchemy
connection_url = URL.create("mssql+pyodbc", query={"odbc_connect": connection_string})
engine = sa.create_engine(connection_url)
engine.echo = False
# creating dfs
df1 = pd.read_sql_query(qry1, engine)
dfA = pd.read_sql_query(qryA, engine)
dfZ = pd.read_sql_query(qryZ, engine)
engine.dispose() #not sure if dispose() is needed
# saving dfs
df1.to_excel(r'C:\Test\df1_tbl_Data.xlsx', index=False)
dfA.to_excel(r'C:\Test\dfA_tbl_Data.xlsx', index=False)
dfZ.to_excel(r'C:\Test\dfZ_tbl_Data.xlsx', index=False)
发布于 2022-04-23 08:09:54
考虑在用户定义的方法中构建数据集合。然后,在主脚本或其他脚本需要时调用它:
SQLcon.py
import sqlalchemy as sa
# and other
imports load_dotenv()
# .env passwords and etc. '''...'''
def pull_data():
# creating SQL connection via sqlalchemy
connection_url = URL.create(
"mssql+pyodbc",
query={"odbc_connect": connection_string}
)
engine = sa.create_engine(connection_url)
engine.echo = False
# creating dfs
df_dict = {
"df1": pd.read_sql_query(qry1, engine),
"dfA": pd.read_sql_query(qryA, engine),
"dfZ": pd.read_sql_query(qryZ, engine)
}
# releasing engine
engine.dispose()
return df_dict
Main.py (以https://docs.python.org/3/reference/import.html形式进口)
from SQLcon import pull_data
...
# CALL AS NEEDED
df_dict = pull_data()
# ACCESS DICT ELEMENTS
df_dict["df1"]
df_dict["dfA"]
df_dict["dfZ"]
...
https://stackoverflow.com/questions/71968576
复制相似问题