如何从文本文件中读取数据库凭据?

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 库,则必须安装。您也可以使用虚拟环境

以上是关于如何从文本文件中读取数据库凭据?的主要内容,如果未能解决你的问题,请参考以下文章

从 XML 文件中读取网络凭据以连接到 TFS 服务器

从文本文件中读取数据并将其嵌入到 HTML 网页中。如何?

从文本文件中读取和写入字符串

从 Julia 中的文本文件中读取数据矩阵

java中如何从文件中读取数据

在iPhone中如何读取文件?