11

DATABASE_URL-MYSQL://username:password@host:port/database_name

错误:database_name 没有属性。

if 'DATABASE_URL' in os.environ:
  url = urlparse(os.getenv['DATABASE_URL'])
 g['db'] = mysql.connector.connect(user=url.username,password=url.password, host=url.hostname ,port=url.port,path=url.path[1:])
4

3 回答 3

21

首先,url.host会导致:

AttributeError:“ParseResult”对象没有属性“主机”

改为使用url.hostname

database_name退出提供的 URL,请使用path

url.path[1:]

解决问题的另一种“不要重新发明轮子”方法是使用sqlalachemy's make_url(),它是基于正则表达式的

In [1]: from sqlalchemy.engine.url import make_url

In [2]: url = make_url("MYSQL://username:password@host:100/database_name")

In [3]: print url.username, url.password, url.host, url.port, url.database
username password host 100 database_name
于 2015-06-24T20:40:40.710 回答
6

使用标准 python3 库

from urllib.parse import urlparse

dbc = urlparse('mysql://username:password@host:port/database_name')
print(dbc.scheme, dbc.hostname, dbc.username, dbc.password, dbc.path.lstrip('/'))
#output: mysql host username password database_name
于 2020-04-04T20:21:08.630 回答
1

将路径更改为 'database':url.path[1:] 对我有用。

于 2015-06-24T21:48:18.200 回答