# HG changeset patch # User Tero Marttila # Date 1372975176 -10800 # Node ID 3534d31282b3f973f12e730f4668016508b98a41 # Parent 7b37f84b17cc8ded08cff5b49e4632ad6e183e1e pvl.verkko.db: support command-line parser/apply diff -r 7b37f84b17cc -r 3534d31282b3 pvl/verkko/db.py --- a/pvl/verkko/db.py Thu Jul 04 03:49:55 2013 +0300 +++ b/pvl/verkko/db.py Fri Jul 05 00:59:36 2013 +0300 @@ -48,6 +48,23 @@ Column('next', String, nullable=True), ) +wlan_sta = Table('wlan_sta', metadata, + Column('id', Integer, primary_key=True), + + Column('ap', String, nullable=False), + Column('wlan', String, nullable=False), + Column('sta', String, nullable=False), + + # updated + Column('first_seen', DateTime, nullable=False), + Column('last_seen', DateTime, nullable=False), + + Column('count', Integer, default=1), + Column('msg', String, nullable=True), + + UniqueConstraint('ap', 'wlan', 'sta'), +) + # for ORM models from sqlalchemy.orm import mapper, sessionmaker @@ -116,3 +133,35 @@ return result.rowcount +# command-line +import optparse +import sys + +def parser (parser, table=None) : + parser.set_defaults( + create_table = table, + ) + parser = optparse.OptionGroup(parser, "Verkko Database") + parser.add_option('--database', metavar='URI', + help="Connect to given database") + + if table is not None : + parser.add_option('--create', action='store_true', + help="Initialize database") + + return parser + +def apply (options, required=True) : + # db + if not options.database and required : + log.error("No database given") + sys.exit(1) + + log.info("Open up database: %s", options.database) + db = Database(options.database) + + if options.create_table is not None and options.create : + log.info("Creating database tables: %s", options.create_table) + options.create_table.create(db.engine, checkfirst=True) + + return db