| @@ -16,15 +16,15 @@ class Database(object): | |||||
| """Represents the MySQL database.""" | """Represents the MySQL database.""" | ||||
| def __init__(self, migrate=False): | def __init__(self, migrate=False): | ||||
| self._connect() | |||||
| self._conn = self._connect() | |||||
| self._check_version(migrate) | self._check_version(migrate) | ||||
| def _connect(self): | def _connect(self): | ||||
| """Establish a connection to the database.""" | """Establish a connection to the database.""" | ||||
| root = os.path.dirname(os.path.abspath(__file__)) | root = os.path.dirname(os.path.abspath(__file__)) | ||||
| default_file = os.path.join(root, ".my.cnf") | default_file = os.path.join(root, ".my.cnf") | ||||
| self._conn = oursql.connect(read_default_file=default_file, | |||||
| autoping=True, autoreconnect=True) | |||||
| return oursql.connect(db="bitshift", read_default_file=default_file, | |||||
| autoping=True, autoreconnect=True) | |||||
| def _migrate(self, cursor, current): | def _migrate(self, cursor, current): | ||||
| """Migrate the database to the latest schema version.""" | """Migrate the database to the latest schema version.""" | ||||
| @@ -58,8 +58,9 @@ class Database(object): | |||||
| def _insert_symbols(self, cursor, code_id, sym_type, symbols): | def _insert_symbols(self, cursor, code_id, sym_type, symbols): | ||||
| """Insert a list of symbols of a given type into the database.""" | """Insert a list of symbols of a given type into the database.""" | ||||
| sym_types = ["functions", "classes", "variables"] | sym_types = ["functions", "classes", "variables"] | ||||
| query1 = "INSERT INTO symbols VALUES (?, ?, ?)" | |||||
| query2 = "INSERT INTO symbol_locations VALUES (?, ?, ?, ?, ?, ?)" | |||||
| query1 = "INSERT INTO symbols VALUES (DEFAULT, ?, ?, ?)" | |||||
| query2 = """INSERT INTO symbol_locations VALUES | |||||
| (DEFAULT, ?, ?, ?, ?, ?, ?)""" | |||||
| for (name, decls, uses) in symbols: | for (name, decls, uses) in symbols: | ||||
| cursor.execute(query1, (code_id, sym_types.index(sym_type), name)) | cursor.execute(query1, (code_id, sym_types.index(sym_type), name)) | ||||
| @@ -105,8 +106,8 @@ class Database(object): | |||||
| query1 = """INSERT INTO code VALUES (?, ?) | query1 = """INSERT INTO code VALUES (?, ?) | ||||
| ON DUPLICATE KEY UPDATE code_id=code_id""" | ON DUPLICATE KEY UPDATE code_id=code_id""" | ||||
| query2 = """INSERT INTO codelets VALUES | query2 = """INSERT INTO codelets VALUES | ||||
| (?, ?, ?, ?, ?, ?, ?, ?)""" | |||||
| query3 = "INSERT INTO authors VALUES (?, ?, ?)" | |||||
| (DEFAULT, ?, ?, ?, ?, ?, ?, ?, ?)""" | |||||
| query3 = "INSERT INTO authors VALUES (DEFAULT, ?, ?, ?)" | |||||
| code_id = mmh3.hash64(codelet.code.encode("utf8"))[0] | code_id = mmh3.hash64(codelet.code.encode("utf8"))[0] | ||||
| origin, url = self._decompose_url(codelet.url) | origin, url = self._decompose_url(codelet.url) | ||||