Skip to content
Snippets Groups Projects
Commit d0386dd9 authored by Rafael Ostertag's avatar Rafael Ostertag
Browse files

Bumped version to 0.3. Database name must now be provided as cmd argument.

parent 8890a9b2
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ from distutils.core import setup ...@@ -2,7 +2,7 @@ from distutils.core import setup
setup( setup(
name='xls2db', name='xls2db',
version='0.2', version='0.3',
packages=['xls2dblib'], packages=['xls2dblib'],
scripts=['xls2db.py'], scripts=['xls2db.py'],
url='https://git.math.uzh.ch/utilities/xsl2db', url='https://git.math.uzh.ch/utilities/xsl2db',
......
#!/usr/bin/env python #!/usr/bin/env python
from __future__ import print_function
import argparse import argparse
import getpass import getpass
import logging import logging
import sys
__author__ = 'Rafael Ostertag <rafael.ostertag@math.uzh.ch>' __author__ = 'Rafael Ostertag <rafael.ostertag@math.uzh.ch>'
...@@ -20,6 +22,8 @@ def parse_argument(): ...@@ -20,6 +22,8 @@ def parse_argument():
nargs='*') nargs='*')
parser.add_argument("--excel-file", help="Excel file to read. Can be a XSLX or XSL file.", required=True) 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("--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() return parser.parse_args()
...@@ -96,11 +100,13 @@ if __name__ == "__main__": ...@@ -96,11 +100,13 @@ if __name__ == "__main__":
if arguments.user: if arguments.user:
server_connection_info['user'] = arguments.user server_connection_info['user'] = arguments.user
excel_file = excel.ExcelFile(arguments.excel_file) 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) sheet_info_list = make_sheet_info_from_argument(excel_file, arguments.sheet)
for sheet_info in sheet_info_list: for sheet_info in sheet_info_list:
import_sheet(database, excel_file, sheet_info) import_sheet(database, excel_file, sheet_info)
print(database.database_name) print(database.database_name)
...@@ -19,22 +19,28 @@ def _make_database_name(prefix): ...@@ -19,22 +19,28 @@ def _make_database_name(prefix):
def _make_database_create(name): 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) db = MySQLdb.connect(**kwargs)
logger.debug('Connected to server %s', kwargs['host']) logger.debug('Connected to server %s', kwargs['host'])
cursor = db.cursor() cursor = db.cursor()
database_name = _make_database_name(prefix) if drop:
sql = _make_database_create(database_name) sql = _make_database_drop(name)
cursor.execute(sql)
sql = _make_database_create(name)
cursor.execute(sql) 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): class Database(object):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment