8

こんにちはpython、データベースを as として使用していますMysql。Python から Mysql データベースに接続したいので、以下のコードを書きました。

メソッド_1

import MySQLdb as mdb


conn = mdb.connect('ip_address', 'user_name', 'pass_word', 'database_name') 

上記を使用することでMysqlに正常に接続できますが、接続文字列を使用して以下のようにアクセスすることで同じことができるかどうかを知りたいです

メソッド_2

connectString=Server=ip_address;Database=database_name;UID=user_name;PWD=pass_word
conn = mdb.connect(connectString) 

しかし、上記を使用するとエラーが発生するので、method_1 でのみMysqlデータベースにアクセスできるかどうか、またはmethod_2で述べたように、変数へのアクセス資格情報を宣言し、その変数を使用して接続する方法があるかどうかを教えてください。

編集されたコード:

実際に私が試していることは以下のとおりです

example_file.ini

[for_primary]

connectString=host="192.168.xx.xxx",user="username_1",passwd="password_1",db="database_1"

[for_secondary]

connectString=host="192.168.xx.xxx",user="username_2",passwd="password_2",db="database_2"

ファイル.py:

import ConfigParser
import MySQLdb as mdb

configFeed = ConfigParser.ConfigParser()
configFeed.read('path to file/example_file.ini')
connectString = configFeed.get('for_primary', 'connectString')
conn = mdb.connect(connectString)
print conn

結果:

 File "/usr/lib64/python2.7/site-packages/MySQLdb/__init__.py", line 81, in Connect
    return Connection(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/MySQLdb/connections.py", line 187, in __init__
    super(Connection, self).__init__(*args, **kwargs2)
_mysql_exceptions.OperationalError: (2005, 'Unknown MySQL server host \'host="192.168.xx.xxx",user="username_1", passwd="password_1",db="database_1"\' (0)')

ファイルの選択に応じて2つのデータベースに接続する必要があるため、この方法で試していexample_file.iniます。.iniファイル内の別の変数への資格情報にアクセスすることを宣言することにより、上記のようにする方法はありますか? .iniファイルから接続文字列を取得すると、ここにあると期待していますstring

4

2 に答える 2

8

できませんMySQLdb.connect。前者のオプションのみをサポートします。

もちろん、接続文字列を構成要素に解析し、それを.connect()関数のキーワード パラメータのセットとして使用できます。

connectParams = dict(entry.split('=') for entry in connectString.split(';'))
mdb.connect(**connectParams)

ただし、上記の分割方法はかなり単純です。use_unicodeおそらく、サポートされていないオプションを削除し、特定のパラメーター値を変換し ( andTrueまたはと考えてください)、パラメーター値の一部であるandの文字Falseをエスケープできる、より洗練された方法が必要になるでしょう。サポートされているキーワード引数については、ドキュメントを参照してください。;=.connect()

于 2012-08-22T12:22:31.503 に答える
0

ドキュメントによると、これを行うことができるはずです:

db=_mysql.connect(host="localhost",user="joebob", passwd="moonpie",db="thangs")

http://mysql-python.sourceforge.net/MySQLdb.html

セクションの下の方で_mysql examplesは、さまざまな呼び出し方法について説明していますconnect()

個人的には、参照している単一の「connectionString」としてそれを行う方法がわかりません。ただし、変数でキーワード引数を使用できるはずです。

于 2012-08-22T12:23:02.563 に答える