2011-12-05 15 views
1

です。データベースに接続するPythonスクリプトを作成しようとしています。 データベースのホストURLは、JDBC形式で私に与えられた:PythonでデータベースURLに接続します.jdbcのURLは

URL = jdbc:mysql://www.myurl.com:3306/ 

私はpythoneseにそのURLを変換する方法を見つけ出すことはできません。

ご協力いただければ幸いです。ありがとう

import MySQLdb 

conn = MySQLdb.connect(host="????",user="web3u4",passwd="password",db="web3db4") 

cursor = conn.cursor() 
cursor.execute ("SELECT VERSION()") 
row = cursor.fetchone() 
print "server version:", row[0] 
cursor.close() 

# disconnect from server 
db.close() 

答えて

0

jdbc文字列を解析するには、urlparse.urlparseを使用する必要があります。

from urlparse import urlparse 
jdbc = "jdbc:mysql://www.myurl.com:3306" 
result= urlparse(jdbc) 


MySQLdb.connect(host=result.host, 
       user=result.username, 
       passwd=result.password, 
       db="web3db4") 

ないあなたはデシベルを渡すに滑走しているか確認してください..しかし、あなたはそれを追加した場合、私は同様にそのお手伝いをすることができます。

+2

ありがとうございますが、動作していません。トレースバック(最新の最後の呼び出し): ファイル "D:\ Temp \ 1Python \ Scripts2011 \ practice-DBconnection.py"、行14、 MySQLdb.connect(host = result.host、 AttributeError: 'ParseResult'オブジェクト'ホスト'属性がありません – gorbysbm

+1

'result.host'は' result.hostname'になります –

+2

@JianggeZhang確かに 'ParseResult(scheme = 'jdbc'、netloc = ''、path = 'mysql://www.myurl ":jdb:mysql"内の ":"は、解析する前に削除する必要があります。 – tokland

0

reモジュールでJDBC文字列を解析するとどうなりますか?たとえば、次のように

>>> import re 
>>> jdbc_str = 'jdbc:mysql://repos.insttech.washington.edu:3306/johndoe?user=johndoe&password=jddb' 
>>> jdbc_pattern = 'mysql://(.*?):(\d*)/' 
>>> (host, port) = re.compile(jdbc_pattern).findall(jdbc_str)[0] 
>>> print host 
repos.insttech.washington.edu 
>>> print port 
3306 

接続文字列は、一つのサンプル[年齢からコピーされ、userpasswordフィールドは、接続文字列で常にあるかどうか、私はパターンに入れていないので、私にはわかりません。

さらに、JDBCサーバーの接続に使用できるJayDeBeApiというモジュールがあります。試してみましたか?

+0

ありがとうございます。これは私が手動で文字列からホストURLをコピーしてホストのパラメータに貼り付けるだけのものではありません(例:host = repos.insttech.washington.edu – gorbysbm

+0

@gorbysbm)JDBC文字列が1つしかない場合、このメソッドは手動で実行するよりも冒険はありません私はそれがsimかもしれないと思ういくつかのJDBC文字列がある場合は操作を実行します。 – hzm

関連する問題