def connect(self, dbname, backup=True): "connect to an existing database" if not os.path.exists(dbname): raise IOError("Database '%s' not found!" % dbname) if not isInstrumentDB(dbname): raise ValueError("'%s' is not an Instrument file!" % dbname) if backup: save_backup(dbname) self.dbname = dbname self.engine = create_engine('sqlite:///%s' % self.dbname, poolclass = SingletonThreadPool) self.conn = self.engine.connect() self.session = sessionmaker(bind=self.engine)() self.metadata = MetaData(self.engine) self.metadata.reflect() tables = self.tables = self.metadata.tables try: clear_mappers() except: pass mapper(Info, tables['info']) mapper(Command, tables['command']) mapper(PV, tables['pv']) mapper(Instrument, tables['instrument'], properties={'pvs': relationship(PV, backref='instrument', secondary=tables['instrument_pv'])}) mapper(PVType, tables['pvtype'], properties={'pv': relationship(PV, backref='pvtype')}) mapper(Position, tables['position'], properties={'instrument': relationship(Instrument, backref='positions'), 'pvs': relationship(Position_PV) }) mapper(Instrument_PV, tables['instrument_pv'], properties={'pv':relationship(PV), 'instrument':relationship(Instrument)}) mapper(Position_PV, tables['position_pv'], properties={'pv':relationship(PV)}) mapper(Instrument_Precommand, tables['instrument_precommand'], properties={'instrument': relationship(Instrument, backref='precommands'), 'command': relationship(Command, backref='inst_precoms')}) mapper(Instrument_Postcommand, tables['instrument_postcommand'], properties={'instrument': relationship(Instrument, backref='postcommands'), 'command': relationship(Command, backref='inst_postcoms')})
def connect(self, dbname, server='sqlite', backup=True): "connect to an existing database" if server == 'sqlite': if not os.path.exists(dbname): raise IOError("Database '%s' not found!" % dbname) if not isMotorDB(dbname): raise ValueError("'%s' is not an Motor file!" % dbname) if backup: save_backup(dbname) self.dbname = dbname self.engine = make_engine(dbname, server) self.conn = self.engine.connect() self.session = sessionmaker(bind=self.engine)() self.metadata = MetaData(self.engine) self.metadata.reflect() tables = self.tables = self.metadata.tables try: clear_mappers() except: pass mapper(MotorsTable, tables['motors']) mapper(InfoTable, tables['info'])
def get_content(doc_id): r = requests.get('https://api.shimo.im/files/{}?html=true'.format(doc_id)) r = json.loads(r.content) if not r: r = load_backup(doc_id) save_backup(doc_id, r) name = r.get('name', '') content = r.get('content', {}) updated = r.get('updated_at', '') resp_data = dict( name=name, content=content, updated=updated ) return resp_data