使用环境变量连接到 Oracle DB 的 Python 脚本

问题描述 投票:0回答:1

我正在练习Python、环境变量和oracle数据库。

我想创建一个 python 脚本,谁是:

  • 连接到 Oracle 数据库,凭证未显示(位于环境变量中)
  • 对数据库执行查询
  • 将此查询结果转成excel文件(xlsx)
  • 在特定硬盘上创建 Excel 文件

这是我当前的脚本:

import os
from datetime import datetime
import pandas as pd
import cx_Oracle

conn = cx_Oracle.connect( -> ***should I insert here the env variable name file ?***)

df_ora = pd.read_sql('''select * from example_db''', conn)

df_ora = pd.DataFrame(sql_query)

df_ora.to_csv(os.environ["user"] + "\\Desktop" + "file_name" +".csv")

说实话,我迷失了 cx_Oracle 和 pandas,不知道为这种脚本设置什么。 尝试从多个视频、库信息和此处学习,但每次我找到文档时,它似乎都不准确地满足我的需求。 一些帮助和解释肯定会帮助我进一步了解脚本编写。 最好的问候,

python pandas oracle cx-oracle
1个回答
0
投票

到目前为止,你做得很好,尽管有些部分从你的问题中不清楚。

我假设您正在设置这样的环境变量?虽然你没有提到你正在使用什么操作系统。

export username=romsnp
export password=secretpassword

然后调用python脚本:

import os
from datetime import datetime
import pandas as pd
import cx_Oracle

username = os.environ.get('username')
password = os.environ.get('password')

conn = cx_Oracle.connect(user=username, password=password, dsn="yourserver.com/ServiceName")

df_ora = pd.read_sql('''select * from example_db''', conn)

# the previous line already creates a dataframe, so you don't need to do it again

df_ora.to_csv("file_name.csv")

为了测试,我会尝试首先将文件导出到运行脚本的同一目录。根据您的操作系统,找出正确的文件系统路径可能是一个令人困惑的问题。

另一件事可能会有所帮助 - 当尝试解决 Python 脚本问题时,以交互方式运行它会很有帮助。最简单的方法是使用 python 解释器,只需从命令行调用

python
,然后一次输入一行脚本,以确保每个命令按预期工作。

例如,您可以尝试单独运行

pd.read_sql('''select * from example_db''', conn)
以确保您的查询和连接正常工作。或者,您可以在尝试写入之前运行
print(os.environ["user"] + "\\Desktop" + "file_name" +".csv")
来验证文件路径的外观。

使用像 Jupyter 这样的交互式笔记本也是进行此类实验的一种流行方法,而不会因为尝试调试 shell 脚本而感到沮丧。

© www.soinside.com 2019 - 2024. All rights reserved.