如何从 database_url 解析 mysql 数据库名称
how to parse mysql database name from database_url
DATABASE_URL- MYSQL://用户名:密码@主机: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:])
首先,url.host
会导致:
AttributeError: 'ParseResult' object has no attribute 'host'
改用url.hostname
。
要从提供的 URL 中获取 database_name
,请使用 path
:
url.path[1:]
另一种 "Don't reinvent the wheel" 解决问题的方法是使用 sqlalachemy
的 make_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
将路径更改为 'database':url.path[1:] 对我有用。
使用标准 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
DATABASE_URL- MYSQL://用户名:密码@主机: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:])
首先,url.host
会导致:
AttributeError: 'ParseResult' object has no attribute 'host'
改用url.hostname
。
要从提供的 URL 中获取 database_name
,请使用 path
:
url.path[1:]
另一种 "Don't reinvent the wheel" 解决问题的方法是使用 sqlalachemy
的 make_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
将路径更改为 'database':url.path[1:] 对我有用。
使用标准 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