使用Python连接到服务器上的数据库而不输入数据库密码

时间:2016-07-05 05:18:02

标签: php python mysql database api

我有一个跟随的情况.. 我正在编写一个python程序。它要求用户输入用户名和密码。现在我从Web服务器上存储的数据库中获取用户名和密码,由GoDady提升并将其与用户输入的凭据进行比较。

我曾经这样做的方法如下:

#!/usr/bin/python
import MySQLdb

db = MySQLdb.connect(host="localhost",    
                     user="john",         
                     passwd="megajonhy", 
                     db="jonhydb")       

cur = db.cursor()    

cur.execute("SELECT * FROM YOUR_TABLE_NAME")  

for row in cur.fetchall():
    print row[0]

db.close()

所以看到连接到程序内的数据库。我必须在程序中提供数据库的用户名和密码。如果我想把我的程序交给其他人,这个方法不好。因为那样我就会喜欢我的用户输入用户ID和密码。而不是连接到程序内的数据库,我希望程序调用一个web脚本,它为我完成所有操作,如果用户是认证用户,则返回。

我的方案的最佳方法是什么?

使用的语言:桌面程序(Python):web(PHP):数据库(MYSQL)

2 个答案:

答案 0 :(得分:0)

您可以在这种情况下使用环境变量。

您必须首先export您的变量,然后使用相同的脚本访问:

import os
password = os.environ['Your-password-variable']

这可能会有所帮助:https://godjango.com/blog/working-with-environment-variables-in-python/

答案 1 :(得分:0)

使用配置文件。

{
    "db_user": "john",
    "db_host": "localhost",
    "db_pass": "megajonhy",
    "database" : "jonhydb"
}

然后加载

import json
import MySQLdb

#Read setting and make available in settings dict
with open('/path/to/conf.json') as data_file:    
    settings = json.load(data_file)

#Open database connection(HOST, USER, PASS, DB)
db = MySQLdb.connect(settings["db_host"],
                 settings["db_user"],
                 settings["db_pass"],
                 settings["database"])