如何从database_url解析mysql数据库名称

问题描述 投票:3回答:3

DATABASE_URL- MYSQL://用户名:密码@主机:端口/数据库名

错误:数据库名称没有属性。

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:])
python mysql database-connection urlparse
3个回答
13
投票

首先,url.host将导致:

[AttributeError:'ParseResult'对象没有属性'host']

改为使用url.hostname

要从提供的URL中获取database_name,请使用path

url.path[1:]

另一种“不要重新发明轮子”解决问题的方法是使用sqlalachemymake_url(),即regexp-based

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

1
投票

更改“数据库”的路径:url.path [1:]对我有用。


0
投票

使用标准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
© www.soinside.com 2019 - 2024. All rights reserved.