在Python中连接jdbc格式的数据库url

3 投票
2 回答
21451 浏览
提问于 2025-04-17 07:42

我正在尝试写一个Python脚本,想要连接到一个数据库。这个数据库的主机网址是以jdbc格式给我的:

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

我不知道怎么把这个网址转换成Python能用的格式。

如果有人能帮忙,我会非常感激。谢谢!

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()

2 个回答

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 这两个字段在连接字符串中是否总是存在,所以我没有把它们放进模式里。

另外,还有一个叫做 JayDeBeApi 的模块,可以用来连接 JDBC 服务器,你试过吗?

3

你应该使用 urlparse.urlparse 来解析jdbc字符串。

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")

我不太确定你打算怎么传递数据库的内容……不过如果你把这个信息加上,我也可以帮你解决这个问题。

撰写回答