comparison pylons_app/lib/db_manage.py @ 229:69a29242ba61

db manage added more logging, set custom logger and add optional print sql statments
author Marcin Kuzminski <marcin@python-works.com>
date Thu, 27 May 2010 00:26:02 +0200
parents c49ebe560af2
children a0116e944da1
comparison
equal deleted inserted replaced
228:c49ebe560af2 229:69a29242ba61
5 import sys 5 import sys
6 ROOT = dn(dn(dn(os.path.realpath(__file__)))) 6 ROOT = dn(dn(dn(os.path.realpath(__file__))))
7 sys.path.append(ROOT) 7 sys.path.append(ROOT)
8 8
9 from pylons_app.model.db import Users 9 from pylons_app.model.db import Users
10 from pylons_app.model.meta import Session 10 from pylons_app.model.meta import Session, Base
11 11
12 from pylons_app.lib.auth import get_crypt_password 12 from pylons_app.lib.auth import get_crypt_password
13 from pylons_app.model import init_model 13 from pylons_app.model import init_model
14 14
15 15 log = logging.getLogger('db manage')
16 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s.%(msecs)03d %(levelname)-5.5s [%(name)s] %(message)s') 16 log.setLevel(logging.DEBUG)
17 from pylons_app.model.meta import Base 17 console_handler = logging.StreamHandler()
18 console_handler.setFormatter(logging.Formatter("%(asctime)s.%(msecs)03d"
19 " %(levelname)-5.5s [%(name)s] %(message)s"))
20 log.addHandler(console_handler)
18 21
19 class DbManage(object): 22 class DbManage(object):
20 def __init__(self): 23 def __init__(self, log_sql):
21 dburi = 'sqlite:////%s' % os.path.join(ROOT, 'hg_app.db') 24 self.dbname = 'hg_app.db'
22 engine = create_engine(dburi) 25 dburi = 'sqlite:////%s' % os.path.join(ROOT, self.dbname)
26 engine = create_engine(dburi, echo=log_sql)
23 init_model(engine) 27 init_model(engine)
24 self.sa = Session() 28 self.sa = Session()
25 29
26 def check_for_db(self, override): 30 def check_for_db(self, override):
27 if not override: 31 log.info('checking for exisiting db')
28 if os.path.isfile(os.path.join(ROOT, 'hg_app.db')): 32 if os.path.isfile(os.path.join(ROOT, self.dbname)):
33 log.info('database exisist')
34 if not override:
29 raise Exception('database already exists') 35 raise Exception('database already exists')
30 36
31 def create_tables(self, override=False): 37 def create_tables(self, override=False):
32 """ 38 """
33 Create a auth database 39 Create a auth database
34 """ 40 """
35 self.check_for_db(override) 41 self.check_for_db(override)
36 42 if override:
43 log.info("database exisist and it's going to be destroyed")
37 Base.metadata.create_all(checkfirst=override) 44 Base.metadata.create_all(checkfirst=override)
38 logging.info('Created tables') 45 log.info('Created tables for %s', self.dbname)
39 46
40 def admin_prompt(self): 47 def admin_prompt(self):
41 import getpass 48 import getpass
42 username = raw_input('give admin username:') 49 username = raw_input('Specify admin username:')
43 password = getpass.getpass('Specify admin password:') 50 password = getpass.getpass('Specify admin password:')
44 self.create_user(username, password, True) 51 self.create_user(username, password, True)
45 52
46 def create_user(self, username, password, admin=False): 53 def create_user(self, username, password, admin=False):
47 logging.info('creating user %s', username) 54 log.info('creating administrator user %s', username)
48 55
49 new_user = Users() 56 new_user = Users()
50 new_user.username = username 57 new_user.username = username
51 new_user.password = get_crypt_password(password) 58 new_user.password = get_crypt_password(password)
52 new_user.admin = admin 59 new_user.admin = admin
58 except: 65 except:
59 self.sa.rollback() 66 self.sa.rollback()
60 raise 67 raise
61 68
62 if __name__ == '__main__': 69 if __name__ == '__main__':
63 dbmanage = DbManage() 70 dbmanage = DbManage(log_sql=True)
64 dbmanage.create_tables(override=True) 71 dbmanage.create_tables(override=True)
65 dbmanage.admin_prompt() 72 dbmanage.admin_prompt()
66 73
67 74