From d0386dd95fdf498287f373985030ee4edfed9a97 Mon Sep 17 00:00:00 2001
From: Rafael Ostertag <rafael.ostertag@math.uzh.ch>
Date: Fri, 15 Jul 2016 12:25:14 +0200
Subject: [PATCH] Bumped version to 0.3. Database name must now be provided as
 cmd argument.

---
 setup.py        |  2 +-
 xls2db.py       |  8 +++++++-
 xls2dblib/db.py | 18 ++++++++++++------
 3 files changed, 20 insertions(+), 8 deletions(-)

diff --git a/setup.py b/setup.py
index 5a5f07c..25a2374 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from distutils.core import setup
 
 setup(
     name='xls2db',
-    version='0.2',
+    version='0.3',
     packages=['xls2dblib'],
     scripts=['xls2db.py'],
     url='https://git.math.uzh.ch/utilities/xsl2db',
diff --git a/xls2db.py b/xls2db.py
index f11ffbe..4d72ac5 100755
--- a/xls2db.py
+++ b/xls2db.py
@@ -1,7 +1,9 @@
 #!/usr/bin/env python
+from __future__ import print_function
 import argparse
 import getpass
 import logging
+import sys
 
 __author__ = 'Rafael Ostertag <rafael.ostertag@math.uzh.ch>'
 
@@ -20,6 +22,8 @@ def parse_argument():
                         nargs='*')
     parser.add_argument("--excel-file", help="Excel file to read. Can be a XSLX or XSL file.", required=True)
     parser.add_argument("--debug-output", help="Turn on debug output", action='store_true', default=False)
+    parser.add_argument("--drop-database", help="Drop existing database", action='store_true', default=False)
+    parser.add_argument("--database", help="Name of the database", default=None, required=True)
 
     return parser.parse_args()
 
@@ -96,11 +100,13 @@ if __name__ == "__main__":
     if arguments.user:
         server_connection_info['user'] = arguments.user
 
+
     excel_file = excel.ExcelFile(arguments.excel_file)
-    database = db.create_database('tmp', **server_connection_info)
+    database = db.create_database(arguments.database, arguments.drop_database, **server_connection_info)
 
     sheet_info_list = make_sheet_info_from_argument(excel_file, arguments.sheet)
     for sheet_info in sheet_info_list:
         import_sheet(database, excel_file, sheet_info)
 
     print(database.database_name)
+
diff --git a/xls2dblib/db.py b/xls2dblib/db.py
index 29f663a..d5c89b0 100644
--- a/xls2dblib/db.py
+++ b/xls2dblib/db.py
@@ -19,22 +19,28 @@ def _make_database_name(prefix):
 
 
 def _make_database_create(name):
-    return "CREATE DATABASE {};".format(name)
+    return "CREATE DATABASE IF NOT EXISTS {};".format(name)
 
+def _make_database_drop(name):
+    return "DROP DATABASE IF EXISTS {};".format(name)
 
-def create_database(prefix, **kwargs):
+
+def create_database(name, drop=False, **kwargs):
     db = MySQLdb.connect(**kwargs)
     logger.debug('Connected to server %s', kwargs['host'])
 
     cursor = db.cursor()
 
-    database_name = _make_database_name(prefix)
-    sql = _make_database_create(database_name)
+    if drop:
+        sql = _make_database_drop(name)
+        cursor.execute(sql)
 
+    sql = _make_database_create(name)
     cursor.execute(sql)
-    logger.debug('Created database %s', database_name)
 
-    return Database(database_name, **kwargs)
+    logger.debug('Created database %s', name)
+
+    return Database(name, **kwargs)
 
 
 class Database(object):
-- 
GitLab