Skip to content

Instantly share code, notes, and snippets.

@DarcJC
Created July 19, 2021 16:12
Show Gist options
  • Select an option

  • Save DarcJC/a1188240e4a8dfd009f1dc015671ce79 to your computer and use it in GitHub Desktop.

Select an option

Save DarcJC/a1188240e4a8dfd009f1dc015671ce79 to your computer and use it in GitHub Desktop.
simple Database URI parser
import os
import re
from pony.orm import Database
class DatabaseURI:
"""
DB url parser for PonyORM.
Sample usage:
from pony import orm
db = orm.Database()
DatabaseUrl(url_env_name='DATABASE_URL').bind_to_pony_db(db)
"""
def __init__(self, url: str = None) -> None:
scheme, _, user, password, host, database = re.match(r'(.*?):/*((\w*):(\w*))?@?([\w.]*)/?(\w*)?', url).groups()
self.provider = scheme
self.user = user
self.password = password
self.host = host
self.database = database
self.filepath = os.path.join(os.getcwd(), self.host)
def bind_to_pony_db(self, database: Database) -> None:
if self.provider == "sqlite":
database.bind(
provider=self.provider,
filename=self.filepath,
create_db=True,
)
else:
database.bind(
provider=self.provider,
user=self.user,
password=self.password,
host=self.host,
database=self.database,
create_db=True,
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment