如何从文本文件中读取数据库凭据?
Posted
技术标签:
【中文标题】如何从文本文件中读取数据库凭据?【英文标题】:How can I read in database credentials from a text file? 【发布时间】:2019-05-14 03:50:25 【问题描述】:如何从 Python 脚本中的文本文件中读取数据库凭据?当 Grafana 搜索目标时,它应该转到文本文件并获取数据库凭据并执行它。
import cx_Oracle
import pprint
con = cx_oracle.connect(user= "", password="", sid= "")
con= cur.cursor()
cur.execute("SELECT ****FROM TEMP")
rows = cur.fetchall()
columns = cur.description()
有没有办法可以将这些数据库凭据从我的文本文件传递给脚本?
【问题讨论】:
我真的无法弄清楚这里的骨架代码与凭据有什么关系?您可以通过可以传递数据库凭据的config.py
文件配置Flask
你在使用 ORM 吗?
@roganjosh 我想为脚本提供一个包含所有必需数据库凭据的文本文件。所以如果我想添加一个新的数据库连接,我只想在文本文件中提供凭据列表
@roganjosh 对烧瓶感到抱歉,但不要担心烧瓶它是未使用的导入。现在我从问题中删除了。
你还没有删除所有的 Flask 引用,这不是一个未使用的导入,你正在启动一个 webapp。
【参考方案1】:
尝试使用import sys
并读取传递给sys.argv
的参数,这是一个列表。您传递的参数从第二个(索引1)开始
一个例子如下。
import sys
if __name__ == "__main__":
print(type(sys.argv))
if len(sys.argv) <2:
print("Expecting file credentials")
exit(1)
f = open(sys.argv[1])
for line in f:
print(line[:len(line)-1]) #avoid printing new line char
指定您的凭据文件应该如何提取字段。
EDIT:输入文件是 JSON
import sys
import json
if __name__ == "__main__":
#print(type(sys.argv))
if len(sys.argv) <2:
print("Expecting file credentials")
exit(1)
f = open(sys.argv[1])
#for line in f:
# print(line[:len(line)-1]) #avoid printing new line char
###READ FROM JSON
data = f.read()
print("---------")
print(data)
content = json.loads(data)
print(content["postgres"]["host"])
print(content["postgres"]["password"])
请注意给我带来问题的一件事:您可以使用f.read()
读取文件一次。如果您再次调用它,则没有任何内容可供阅读。
【讨论】:
我可以使用这样的 JSON 文件吗? "postgres": "user": "user", "password": "password", "host": "host", "端口”:“端口”,“数据库”:“数据库” 当然,如果尚未安装json
库,则必须安装。您也可以使用虚拟环境以上是关于如何从文本文件中读取数据库凭据?的主要内容,如果未能解决你的问题,请参考以下文章