首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用Python上的一个连接进行SQL多个查询

使用Python上的一个连接进行SQL多个查询
EN

Stack Overflow用户
提问于 2022-04-22 04:14:21
回答 1查看 259关注 0票数 0

我是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 .但它会产生多个重新连接.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-23 08:09:54

考虑在用户定义的方法中构建数据集合。然后,在主脚本或其他脚本需要时调用它:

SQLcon.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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形式进口)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from SQLcon import pull_data

...

# CALL AS NEEDED
df_dict = pull_data()

# ACCESS DICT ELEMENTS
df_dict["df1"]
df_dict["dfA"]
df_dict["dfZ"]
...
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71968576

复制
相关文章
(33)if、case语句
②[ 条件判断式 ]就是使用test命令判断,所以中括号和条件判断式之间必须有空格
生信real
2020/09/10
1.2K0
(7)case语句[通俗易懂]
总结:把安装php的各种版本一个文件,文件里面是函数安装php各种版本的函数,然后在入口文件使用. /server/scripts/php.sh加载这个文件,在定义函数调用文件中的函数功能即可
全栈程序员站长
2022/09/20
9690
(7)case语句[通俗易懂]
使用case语句编写系统服务脚本
case语句可以很好的代替if语句中的多分支结构,使用case分支语句时,有几个值得注意的特点如下所述:
小手冰凉
2019/09/10
1.1K0
使用case语句编写系统服务脚本
SystemVerilog-决策语句-case语句
经过几周的更新,SV核心部分用户自定义类型和包内容已更新完毕,接下来就是RTL表达式和运算符。
碎碎思
2022/11/14
3.6K0
SystemVerilog-决策语句-case语句
CASE语句与CASE表达式
case语句与case表达式是plsql流程控制的重要组成部分,尽管其使用方法较为简单,但容易混淆。本文将描述case语句与case表达式并给出演示以便于更好理解两者的异同及使用时的注意事项。 一、简单case语句
Leshami
2018/08/14
1.3K0
Java switch case语句
swith 语句主要用于判断一个变量与一系列值中某个值是否相等,每一个值称为一个分支。基本格式如下:
算法与编程之美
2022/10/28
1.4K0
Java switch case语句
mysql 分组统计 case when 及 if 语句使用
需求: 同时:中文名重复了就是1部剧,不重复就是多部剧 需求分析: 这个需要分组、需要统计、需要判断、需要distinct。 分组:根据地区、类别、中文名称分类; 判断:根据类型进行判断同时要求和 因为中文名称重复的就是1部,所以统计的时候,要使用到distinct去重。 表语句: DROP TABLE IF EXISTS `yj_item_plan`; CREATE TABLE `yj_item_plan` (   `id` bigint(20) NOT NULL AUTO_INCREMENT,  
凯哥Java
2022/12/16
2.5K0
mysql 分组统计 case when 及 if 语句使用
java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支。
taoli
2022/09/30
1.4K0
java switch case 语句
如何用ORM支持SQL语句的CASE WHEN?
OQL如何支持CASE WHEN? 今天,一个朋友问我,OQL可否支持CASE WHEN语句?他给的示例SQL如下: select HName,case when IsEnable=1 then '启用' else '停用' from tb_User OQL是SOD框架的ORM查询语言,它类似Linq,但是它诞生的历史比Linq早,并且更加接近SQL语法。所以,对SOD框架而言,对应ORM如何支持CASE WHEN,就等于是问OQL如何支持CASE WHEN了。 这个问题已经不止这一个朋友来问我了,我想了下
用户1177503
2018/02/26
2.1K0
Mysql的 If和 Case语句
比如在上例子中,我们存储了一些不希望暴露性别的用户,存储的值为3.此时想要查询可以:
呼延十
2019/06/26
3.4K0
Mysql的 If和 Case语句
mysql数据库中 case when语句使用
在mysql数据库中,有时候我们会使用到类似if else的判断操作。那么mysql中怎么处理这种需求呢?
凯哥Java
2019/07/01
2.9K0
mysql数据库中 case when语句使用
在mysql数据库中,有时候我们会使用到类似if else的判断操作。那么mysql中怎么处理这种需求呢?
凯哥Java
2022/12/15
2.1K0
mysql数据库中 case when语句使用
JavaScript switch case语句详解
switch 语句专门用来设计多分支条件结构。与 else/if 多分支结构相比,switch 结构更简洁,执行效率更高。 语法格式
用户3519280
2023/07/07
4760
JavaScript switch case语句详解
Case When ELSE END语句
一、简介、Case  When   ELSE   END共有两种用法:  说实话,这种就是数据库版的switch语句,但是只是形式上很像,实际上还是有差别的!!! Create Table Test6
郑小超.
2018/01/26
2.4K0
带case操作的update语句_多个case when嵌套
1、场景:由于多次循环执行数据库操作是非常耗费性能的。因此,我们需要尽可能一条UPDATE语句更新多条数据。
全栈程序员站长
2022/10/04
2.7K0
流程控制-case语句
在生产环境中,我们总会遇到一个问题需要根据不同的状况来执行不同的预案,那么我们要处理这样的问题就要首先根据可能出现的情况写出对应预案,根据出现的情况来加载不同的预案。
星哥玩云
2022/09/08
6380
order by case when执行优先级_sql case语句
select * from table where 条件1 AND 条件2 OR 条件3
全栈程序员站长
2022/10/02
1.4K0
Mysql中的条件语句if、case
Mysql中的条件语句在我们对数据进行转换的时候比较有用,这样就不需要创建中转表。
大江小浪
2018/07/24
6.5K0
判断结构select...case语句
对于多选一的情况时,使用select...case语句可以让代码更简单、易读。下面我们就先介绍基础知识,然后结合示例来学习select...case语句。
无言之月
2019/10/13
3.9K0
点击加载更多

相似问题

如何使用多个case语句更新多个null值

13

使用CASE语句更新多行

34

无法使用case语句更新

11

使用case语句进行更新

25

使用case语句更新字段

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文