2017-03-20 2 views
0

それはMySQLデータベースに接続するための私のデータベースの資格情報で単一のpyファイルを作成することができます。Pythonとの私のデータベース接続のインポート

con = [ [ip='0.0.0.0'],[username = 'root'], 
[password='pswd'],[database='test']] 

このファイルを別のファイルで使用してください。

import dbcon.py* 

dbcon.sort 

con = mdb.connect(info from py file goes here.) 
+0

だけでなく、することができます。それがどのように役立つかを見ています。 1つのファイルに接続してインポートし、他の多くのファイルで使用することもできます。しかし、データとコードを混ぜるのは良い考えではありません。私たちはHTMLやJSをPythonコードに入れません。構成データを別のファイルに入れてください。 – rsm

+0

なぜそれは安全上の懸念か悪い習慣であるのは良い考えではないのですか? – Brandon

+0

別の種類のコードとデータを分離して保存するのはgootです。 1つの場所ですべてを混ぜることはタイトカップリングと呼ばれ、プログラミングの練習は悪いことです。多くの依存関係やハードコードされた設定などがランダムな場所で発生し、変更には大きな苦痛が伴います。それは安全ではありません、あなたの資格情報は、コードリポジトリに移動し、すべてのコードのバックアップなどに格納されているとはるかに簡単にいくつかの機密データを持つ多くのpyファイルに単一の設定ファイルへのアクセスを制限する。 – rsm

答えて

0

のようにそれは可能ですが、それは、コードとデータ(任意の種類 - 設定、HTMLなど)を混合するためには良い考えではありません、少なくとも2つの理由のために、:

  • デザイン - あなたはという高いカップリングと呼ばれることになります。多くの依存関係があり、追跡が難しく、アプリの変更が困難になる状況。
  • セキュリティ - あなたの資格情報は、いくつかのコードのバックアップアーカイブまたはリポジトリで間もなく終了します。設定ファイルは、実際にはpyファイルではなく、さらに暗号化することができます。それがWebアプリケーションの場合、単一の設定ファイルへのアクセスを制限し、機密データを持つことができるすべてのpyファイルへのアクセスを制限する方が簡単です。

このように使いやすく、使いやすい接続処理機能を作成できます。ただし、接続資格情報を別の構成ファイルに移動します。

のconfig.ini:

[mysqlDB] 
host = '0.0.0.0' 
db = 'test' 
user = 'root' 
pass = 'pswd' 

あなたの接続PYファイルに設定を読み込むか、それをよりグローバルにすることができ(すなわちシングルトン?)。あなたは、接続ファイルに設定を読みたい場合は、次の

storage.py:

import configparser 
import MySQLdb.cursors 

config = configparser.ConfigParser() 
config.read('config.ini') 

def connect(): 
    return MySQLdb.connect(host = config['mysqlDB']['host'], 
          user = config['mysqlDB']['user'], 
          passwd = config['mysqlDB']['pass'], 
          db = config['mysqlDB']['db']) 

使用例:

import storage 

conn = storage.connect() 
+0

@brandonこれがあなたの質問に答えるなら、緑のダニと(おそらく助けになるためにアップボトムを)授与してください。そうでなければ、まだ明確ではないことを説明してください。 – rsm

+0

はい、それは完璧でした私は非常に病気でしたが遅れて謝りますが、あなたの返信や例に感謝します。非常によく説明を書いた。 – Brandon

+0

と私はこれを正しく読んでいる場合私はそれを使用することができます。クエリ=(myquery)conn = storage.connect()conn:cur = conn.cursor()cur.execute(クエリ)。私はこのサイトの機能がまだ混乱しているように見えますが、私はやってみて謝っています。 – Brandon

関連する問題