comparison lemuriformes/url2sql.py @ 17:4793f99b73e0

[lemuriformes] utility functions
author Jeff Hammel <k0scist@gmail.com>
date Sun, 10 Dec 2017 17:42:52 -0800
parents
children
comparison
equal deleted inserted replaced
16:9b1bb9eee962 17:4793f99b73e0
1 """
2 instantiate a SQL interface from a URL
3 """
4
5 from urlparse import urlparse
6
7 # Local imports of types; messy, currently
8 from .db import MySQLConnection
9 from .cli import ConfigurationParser
10 from .csv2sqlite import SQLiteConnection
11
12 sql_types = {'mysql': MySQLConnection,
13 'sqlite': SQLiteConnection
14 }
15
16 ports = {'mysql': 3306,
17 }
18
19
20 def url2sql(url):
21 """instantiate SQL connection based on URL"""
22
23 # parse URL
24 parsed = urlparse(url)
25
26 if parsed.scheme not in sql_types:
27 raise AssertionError("Unsupported SQL connector type: '{}'".format(parsed.scheme))
28
29 default_port = ports.get(parsed.scheme)
30
31 # instantiate MySQL connection
32 if parsed.scheme == 'mysql':
33 conn_data = dict(host=parsed.hostname,
34 user=parsed.username,
35 password=parsed.password,
36 port=parsed.port or default_port,
37 db=parsed.path.strip('/'))
38 elif parsed.scheme == 'sqlite':
39 conn_data = dict(db_file=parsed.path)
40 return sql_types[parsed.scheme](**conn_data)