def display_card_table(self, run_filter=True): self.card_model = CardModel(self.component_manager) self.card_model.setTable("cards") headers = { QUESTION: _("Question"), ANSWER: _("Answer"), TAGS: _("Tags"), GRADE: _("Grade"), NEXT_REP: _("Next rep"), LAST_REP: _("Last rep"), EASINESS: _("Easiness"), ACQ_REPS: _("Learning\nreps"), RET_REPS: _("Review\nreps"), LAPSES: _("Lapses"), CREATION_TIME: _("Created"), MODIFICATION_TIME: _("Modified") } for key, value in headers.iteritems(): self.card_model.setHeaderData(key, QtCore.Qt.Horizontal, QtCore.QVariant(value)) self.table.setModel(self.card_model) self.table.horizontalHeader().sectionClicked.connect(\ self.horizontal_header_section_clicked) table_settings = self.config()["browse_cards_dlg_table_settings"] if table_settings: self.table.horizontalHeader().restoreState(table_settings) self.table.horizontalHeader().setMovable(True) self.table.setItemDelegateForColumn(\ QUESTION, QA_Delegate(self.component_manager, QUESTION, self)) self.table.setItemDelegateForColumn(\ ANSWER, QA_Delegate(self.component_manager, ANSWER, self)) self.table.setEditTriggers(QtGui.QAbstractItemView.NoEditTriggers) # Since this function can get called multiple times, we need to make # sure there is only a single connection for the double-click event. try: self.table.doubleClicked.disconnect(self.menu_edit) except TypeError: pass self.table.doubleClicked.connect(self.menu_edit) self.table.verticalHeader().hide() query = QtSql.QSqlQuery("select count() from tags") query.first() self.tag_count = query.value(0).toInt()[0] if run_filter: self.update_filter() # Needed after tag rename. if self.saved_index: # All of the statements below are needed. # Qt does not (yet) seem to allow to restore the previous column # correctly. self.saved_index = self.card_model.index(self.saved_index.row(), self.saved_index.column()) self.table.scrollTo(self.saved_index) self.table.scrollTo(self.saved_index, QtGui.QAbstractItemView.PositionAtTop) # Restore selection. old_selection_mode = self.table.selectionMode() self.table.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) # Note that there seem to be serious Qt preformance problems with # selectRow, so we only do this for a small number of rows. if len(self.saved_selection) < 10: for index in self.saved_selection: self.table.selectRow(index.row()) self.table.setSelectionMode(old_selection_mode)
def fromDB(tradeID): q = QtSql.QSqlQuery("""SELECT * FROM TRADES WHERE TRADE_ID='%s'""" % tradeID) while q.next(): book = q.value(1).toInt()[0] trader = str(q.value(2).toString()) tradeDateTime = q.value(3).toDateTime().toPyDateTime() settleDate = q.value(4).toDate().toPyDate() instCode = str(q.value(5).toString()) amount = q.value(6).toDouble()[0] price = q.value(7).toDouble()[0] collateralized = bool(q.value(8).toInt()[0]) refTrade = str(q.value(9).toString()) refYield = q.value(10).toDouble()[0] settledBy = str(q.value(11).toString()) comment = unicode(q.value(12).toPyObject()) md = q.value(13).toDate() maturityDate = md and md.toPyDate() or None q = QtSql.QSqlQuery( """SELECT SEC_TYPE FROM SECINFO WHERE SEC_CODE='%s'""" % instCode) while q.next(): secname = q.value(0).toString() if secname == QtCore.QString(u'现金'): obj = CashTrade(book, trader, tradeDateTime, amount, instCode=instCode, refTrade=refTrade, comment=comment, tradeID=tradeID) return obj elif secname == QtCore.QString(u'存款'): obj = DepoTrade(book, trader, tradeDateTime, amount, refYield, maturityDate, dcc='Act/360', settledBy=settledBy, comment=comment, tradeID=tradeID) return obj elif secname in [ QtCore.QString(u'短期融资券'), QtCore.QString(u'企债') ]: obj = BondTrade(book, trader, tradeDateTime, settleDate, instCode, amount, price, refYield, maturityDate, collateralized=collateralized, refTrade=refTrade, settledBy=settledBy, comment=comment, tradeID=tradeID) return obj else: raise NotImplementedError('Unknown trade type')
return view def addrow(): print model.rowCount() ret = model.insertRows(model.rowCount(), 1) print ret def findrow(i): delrow = i.row() if __name__ == '__main__': app = QtGui.QApplication(sys.argv) db = QtSql.QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName('acmbkbiet.db') model = QtSql.QSqlTableModel() delrow = -1 initializeModel(model) view1 = createView("Table Model (View 1)", model) view1.clicked.connect(findrow) dlg = QtGui.QDialog() layout = QtGui.QVBoxLayout() layout.addWidget(view1) button = QtGui.QPushButton("Add a row") button.clicked.connect(addrow) layout.addWidget(button) btn1 = QtGui.QPushButton("del a row")
def _slotPushButtonCreateClicked(self): if (self.ui.lineEditNewDB.text() == ''): box = QMessageBox() box.setText(unicode(u"Spécifiez le nom de la base à créer.")) box.exec_() else: s = "SELECT count(*) from pg_database\ WHERE datname = 'tempusaccess_" + self.ui.lineEditNewDB.text( ) + "'" q = QtSql.QSqlQuery(unicode(s), self.caller.db) q.next() create = True if (int(q.value(0)) > 0): ret = QMessageBox.question( self, "TempusAccess", u"La base de données 'tempusaccess_" + self.ui.lineEditNewDB.text() + u"' existe déjà et va être réinitialisée : toutes les données présentes seront écrasées. \n Confirmez-vous cette opération ?", QMessageBox.Ok | QMessageBox.Cancel, QMessageBox.Cancel) create = False else: ret = QMessageBox.Ok if (ret == QMessageBox.Ok): if (create == True): cmd = [ "createdb", "-h", self.caller.db.hostName(), "-U", self.caller.db.userName(), "-p", str(self.caller.db.port()), "tempusaccess_" + self.ui.lineEditNewDB.text() ] rc = execute_external_cmd(cmd) self.caller.set_db_connection_dialog.refreshDBList() dbstring = "host=" + self.caller.db.hostName( ) + " dbname=tempusaccess_" + self.ui.lineEditNewDB.text( ) + " port=" + str(self.caller.db.port()) cmd = [ "python", TEMPUSLOADER, "--action", "reset", "--tempusaccess", "--path", self.plugin_dir + "/data/system.zip", "--sep", ";", "--encoding", "UTF8", "-d", dbstring ] rc = execute_external_cmd(cmd) box = QMessageBox() box.setModal(True) if (rc == 0): self.iface.mapCanvas().refreshMap() box.setText( u"La base a été créée. Vous pouvez maintenant y importer des données." ) self.ui.comboBoxDB.setCurrentIndex( self.ui.comboBoxDB.findText( self.ui.lineEditNewDB.text())) self._slotPushButtonLoadClicked() else: box.setText( u"Erreur pendant la création de la base.\nPour en savoir plus, ouvrir la console Python de QGIS et relancer la commande." ) box.exec_()
def query(self, stmt): if not self._queryExecuter: return QtSql.QSqlQuery() return self._queryExecuter(stmt)
def confirmClientPolicyConstraint(widget, eventTypeId, clientId, eventSetDate, eventDate): if not eventTypeId: QtGui.QMessageBox.warning(widget, u'Внимание!', u'Не указан указан тип (цель) события.', QtGui.QMessageBox.Ok) return False db = QtGui.qApp.db stmt = u'''SELECT rbFinance.code FROM rbFinance INNER JOIN EventType ON EventType.finance_id = rbFinance.id WHERE EventType.id = %d AND EventType.deleted = 0''' % eventTypeId query = QtSql.QSqlQuery(db.db) query.exec_(stmt) eventSetDate = eventSetDate if eventSetDate and eventSetDate.isValid( ) else QtCore.QDate.currentDate() eventDate = eventDate if eventDate and eventDate.isValid( ) else eventSetDate if query.next(): record = query.record() financeCode = forceString(record.value('code')) policyRecordGetter = None if u'2' in financeCode.lower(): policyRecordGetter = getClientCompulsoryPolicy elif u'3' in financeCode.lower(): policyRecordGetter = getClientVoluntaryPolicy if policyRecordGetter: policyRecord = policyRecordGetter(clientId, eventDate) if not policyRecord: policyRecord = policyRecordGetter(clientId) if policyRecord: policyBegDate = forceDate(policyRecord.value('begDate')) policyEndDate = forceDate(policyRecord.value('endDate')) validPolicy = not policyBegDate.isValid( ) or policyBegDate <= eventDate validPolicy = validPolicy and (not policyEndDate.isValid() or policyEndDate >= eventDate) if not validPolicy: if not confirmPolicyAvailable( widget, u'Полис пациента не действителен по дате!'): return False # i4226: Жесткий контроль ввода событий для пациента, # чей полис принадлежит страховой компании с приостановленным обслуживанием compPolicyRecord = getClientCompulsoryPolicy(clientId, eventDate) volunPolicyRecord = getClientVoluntaryPolicy(clientId, eventDate) if compPolicyRecord: compulsoryServiceStop = forceBool( compPolicyRecord.value('compulsoryServiceStop')) compulsoryServiceStopIgnore = forceBool( db.translate('EventType', 'id', eventTypeId, 'compulsoryServiceStopIgnore')) else: compulsoryServiceStop = False compulsoryServiceStopIgnore = False if volunPolicyRecord: voluntaryServiceStop = forceBool( volunPolicyRecord.value('voluntaryServiceStop')) voluntaryServiceStopIgnore = forceBool( db.translate('EventType', 'id', eventTypeId, 'voluntaryServiceStopIgnore')) else: voluntaryServiceStop = False voluntaryServiceStopIgnore = False if (compulsoryServiceStop and not compulsoryServiceStopIgnore) \ or (voluntaryServiceStop and not voluntaryServiceStopIgnore): if compulsoryServiceStop: policyType = u'ОМС ' elif voluntaryServiceStop: policyType = u'ДМС ' else: policyType = u'' message = u"По данной СМО приостановлено обслуживание {policyType}полисов.\n" \ u"Это может привести к затруднениям оплаты обращения.".format(policyType=policyType) # return confirmPolicyAvailable(widget, message) QtGui.QMessageBox.critical(widget, u'Внимание!', message, QtGui.QMessageBox.Ok) return False return True
def search_positions(self): # deviceid record = self.modelDevice.record(self.ui.comboBox.currentIndex()) self.deviceid = record.value(0) # Dates startdate = self.ui.dateEdit.date().toString("yyyy-MM-dd").encode( "ascii") # start date enddate = self.ui.dateEdit_2.date().toString("yyyy-MM-dd").encode( "ascii") # end date starttime = self.ui.timeEdit.time().toString("HH:mm:ss").encode( "ascii") # start time endtime = self.ui.timeEdit_2.time().toString("HH:mm:ss").encode( "ascii") # end time self.StartDateTime = "%s %s" % ( startdate, starttime ) # Start date-time to pass to postgresql function self.EndDateTime = "%s %s" % ( enddate, endtime) # End date-time to pass to postgresql function # Generate point model self.fun_sql = SQL_FUN_POS_DEV_BETWN_DATE % (int( self.deviceid), self.StartDateTime, self.EndDateTime) print self.fun_sql positionsmodel = QtSql.QSqlQueryModel() positionsmodel.setQuery(self.fun_sql, self.traccardb.db) sortcolumn = positionsmodel.record().indexOf("time") # filterColumn=positionsmodel.record().indexOf("") USELESS QApplication.setOverrideCursor(QCursor(Qt.WaitCursor)) self.ui.tableView.setModel(positionsmodel) self.ui.tableView.setVisible(False) self.ui.tableView.resizeColumnsToContents() self.ui.tableView.setVisible(True) self.ui.tableView.setSortingEnabled(True) self.ui.tableView.setAlternatingRowColors(True) self.ui.tableView.setSelectionMode( QtGui.QAbstractItemView.SingleSelection) self.ui.tableView.setSelectionBehavior(QAbstractItemView.SelectRows) self.ui.tableView.verticalHeader().setVisible(False) # κάνω το sort στο tableview γιατί στο QSortFilterProxyModel # δεν δουλεύει όταν το datasource είναι QSqlQueryModel self.ui.tableView.sortByColumn(sortcolumn, QtCore.Qt.AscendingOrder) for field in ["the_geom", "other", "device_id"]: columnindex = positionsmodel.record().indexOf(field) self.ui.tableView.setColumnHidden(columnindex, True) # Generate Line model self.fun_sql_line = SQL_FUN_POLYLINE_DEV_BETWN_DATE % (int( self.deviceid), self.StartDateTime, self.EndDateTime) print self.fun_sql_line linemodel = QtSql.QSqlQueryModel(self) linemodel.setQuery(self.fun_sql_line, self.traccardb.db) mapper = QDataWidgetMapper() mapper.setModel(linemodel) mapper.addMapping(self.ui.lineEdit, 3) mapper.toFirst() QApplication.restoreOverrideCursor()
def monitor_mode_enable(self): ######################### ### Method Works ### ######################### query = QtSql.QSqlQuery(db) int_iface = str(self.adapters_comboBox.currentText()) query.prepare( "select adapters.bssid from adapters where adapters.name = ? and adapters.status = ?" ) query.addBindValue(int_iface) query.addBindValue("before") query.exec_() query.next() try: if len(adapters) == len(monitors): message = QtGui.QMessageBox.information( self, "Select diferent adapter", int_iface + " Has already been put in monitor mode", QtGui.QMessageBox.Ok) return if len(monitors) > len(adapters): response = QtGui.QMessageBox.information( self, 'Too many monitors', 'There are too many monitor interfaces up\n' 'Would you like to reset them?', QtGui.QMessageBox.Yes | QtGui.QMessageBox.No) if response == QtGui.QMessageBox.Yes: for i in monitors: call(['airmon-ng', 'stop', i]) mon_iface = '' for i in range(self.monitors_comboBox.count()): self.monitors_comboBox.removeItem(i) self.wireless_interface() if response == QtGui.QMessageBox.No: return if query.isValid(): Mon_bss = str(query.value(0).toString()) try: query1 = QtSql.QSqlQuery() query1.prepare( "select monitors.name from monitors where monitors.bssid = ?" ) query1.addBindValue(Mon_bss.upper()) query1.exec_() query.next() if query1.isValid(): message = QtGui.QMessageBox.information( self, "Select diferent adapter", int_iface + " has already been put in monitor mode", QtGui.QMessageBox.Ok) else: comm = str( commands.getoutput( "ifconfig -a | awk '/HWaddr/ {print $1 " " $NF}'")) a = comm.splitlines() for word in a: wor_essid = word[:-17] wor_mac = word[-17:] if wor_essid == int_iface: before_intface = wor_essid, wor_mac wor_mac_mon = self.stealth(str(wor_essid), str(wor_mac)) query.prepare( "insert into adapters(name, bssid, status) values(?,?,?)" ) query.addBindValue(wor_essid) query.addBindValue(wor_mac_mon) query.addBindValue('after') query.exec_() comma = str( commands.getoutput('airmon-ng start %s' % (int_iface))) if 'monitor mode enabled' in comma: reg = re.compile('mon\d', re.IGNORECASE) x_int = reg.findall(comma) for a, monitor in enumerate(x_int): mon_iface = monitor if mon_iface in monitors: mon_iface = x_int[(a + 1) % len(x_int)] else: monitors.append(mon_iface) if self.injection_working( mon_iface ): ## Check if injection is working if mon_iface in monitors: for monit in monitors: self.monitors_comboBox.addItem(monit) self.Monitor_select_comboBox.addItem( monit) self.wlan1_monitor_button.setVisible( True) else: monitors.append(mon_iface) for monit in monitors: self.monitors_comboBox.addItem(monit) self.Monitor_select_comboBox.addItem( monit) self.wlan1_monitor_button.setVisible( True) else: print('Injection NOT working') except OSError as e: print e.message except QtSql.QSqlError as qt: ## Add instuctions to fix or buy other card print qt.text() ## Disable(!!!!!) buttons except QtSql.QSqlError as qt: print qt.text()
def recs(self): #################### # Method works # #################### try: row = 0 col = 0 query = QtSql.QSqlQuery() self.my_tableWidget.setColumnCount(3) self.my_tableWidget.setColumnWidth(1, 70) self.my_tableWidget.setColumnWidth(2, 70) self.my_tableWidget.setRowCount(20) rec_progs = [ 'aircrack-ng', 'aireplay-ng', 'airodump-ng', 'airmon-ng', 'packetforge-ng', 'iw', 'iwconfig', 'reaver', 'wash', 'mdk3', 'pyrit', 'ifconfig', 'sqlite3' ] for prog in rec_progs: if self.program_list(prog): ProgList.append(prog) query.prepare( "insert into recs (program_name, available) values (?,?)" ) query.addBindValue(prog) query.addBindValue(True) query.exec_() x = QtGui.QTableWidgetItem() x.setFlags(QtCore.Qt.ItemIsEnabled) x.setCheckState(QtCore.Qt.Checked) y = QtGui.QTableWidgetItem() y.setFlags(QtCore.Qt.ItemIsEnabled) y.setCheckState(QtCore.Qt.Checked) row_item = QtGui.QTableWidgetItem(prog) self.my_tableWidget.setItem(row, col, row_item) self.my_tableWidget.setItem(row, 1, x) self.my_tableWidget.setItem(row, 2, y) row += 1 else: not_rec_list.append(prog) query.prepare( "insert into recs (program_name, available) values (?,?)" ) query.addBindValue(prog) query.addBindValue(False) query.exec_() x = QtGui.QTableWidgetItem() x.setFlags(QtCore.Qt.ItemIsEnabled) x.setCheckState(QtCore.Qt.Unchecked) y = QtGui.QTableWidgetItem() y.setFlags(QtCore.Qt.ItemIsEnabled) y.setCheckState(QtCore.Qt.Checked) row_item = QtGui.QTableWidgetItem(prog) self.my_tableWidget.setItem(row, col, row_item) self.my_tableWidget.setItem(row, 1, x) self.my_tableWidget.setItem(row, 2, y) row += 1 not_rec_progs = ['bully', 'crunch', 'pw-inspector', 'oclhashcat'] for prog in not_rec_progs: if self.program_list(prog): ProgList.append(prog) query.prepare( "insert into recs(program_name, available) values(?,?)" ) query.addBindValue(prog) query.addBindValue(True) query.exec_() x = QtGui.QTableWidgetItem() x.setFlags(QtCore.Qt.ItemIsEnabled) x.setCheckState(QtCore.Qt.Checked) y = QtGui.QTableWidgetItem() y.setFlags(QtCore.Qt.ItemIsEnabled) y.setCheckState(QtCore.Qt.Unchecked) row_item = QtGui.QTableWidgetItem(prog) self.my_tableWidget.setItem(row, col, row_item) self.my_tableWidget.setItem(row, 1, x) self.my_tableWidget.setItem(row, 2, y) row += 1 else: not_rec_list.append(prog) query.prepare( "insert into recs(program_name, available) values (?,?)" ) query.addBindValue(prog) query.addBindValue(False) query.exec_() x = QtGui.QTableWidgetItem() x.setFlags(QtCore.Qt.ItemIsEnabled) x.setCheckState(QtCore.Qt.Unchecked) y = QtGui.QTableWidgetItem() y.setFlags(QtCore.Qt.ItemIsEnabled) y.setCheckState(QtCore.Qt.Unchecked) row_item = QtGui.QTableWidgetItem(prog) self.my_tableWidget.setItem(row, col, row_item) self.my_tableWidget.setItem(row, 1, x) self.my_tableWidget.setItem(row, 2, y) row += 1 self.my_tableWidget.setRowCount(row) if not_rec_list.__len__() == 0: self.Rec_Install_Button.setEnabled(False) except OSError as e: print e.message
def createConnection(self): """ 1) It is important to create Query after the call to db.open() ! """ db = QtSql.QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName('appdata.db') if not db.open(): QtGui.QMessageBox.critical( None, QtGui.qApp.tr("Cannot open database"), QtGui.qApp.tr( "Unable to establish a database connection.\n" "This example needs SQLite support. Please read " "the Qt SQL driver documentation for information " "how to build it.\n\n" "Click Cancel to exit."), QtGui.QMessageBox.Cancel) return False query = QtSql.QSqlQuery() self.q = query cmd = "SELECT name FROM sqlite_master WHERE type in ('table','view')" self.ex(cmd) while query.next(): data = query.value(0) print(data) # pragma foreign_keys = ON; ### tasks ### cmd = "CREATE TABLE IF NOT EXISTS tasks(id integer primary key autoincrement, name varchar(100), uuid varchar(36), level int, parent varchar(36), time_created varchar(24), status varchar, priority int, description varchar(2048), time_completed varchar(24), time_spent int, time_spent_prediction int)" self.ex(cmd) ### /tasks ### cmd = "CREATE TABLE IF NOT EXISTS tasks_trash(id integer primary key autoincrement, name varchar(100), uuid varchar(36), level int, parent varchar(36), time_created varchar(24), status varchar, priority int)" self.ex(cmd) cmd = "CREATE TABLE IF NOT EXISTS activity_log(id integer primary key autoincrement, time varchar(24), activity varchar(16))" self.ex(cmd) cmd = "CREATE TABLE IF NOT EXISTS metadata(key varchar(64) UNIQUE, value varchar(64))" self.ex(cmd) cmd = "INSERT INTO metadata(key,value) SELECT 'targeted_task', '' WHERE NOT EXISTS(SELECT 1 FROM metadata WHERE key = 'targeted_task' AND value != '')" self.ex(cmd) ### reminders ### # remind regularly, once cmd = "CREATE TABLE IF NOT EXISTS reminders(id integer primary key autoincrement, name varchar(100), uuid varchar(36), time_created varchar(24), status varchar, mode varchar(32), description varchar(2048), times_reminded int)" self.ex(cmd) cmd = "CREATE TABLE IF NOT EXISTS reminders_archive(int, name varchar(100), uuid varchar(36), time_created varchar(24), status varchar, description varchar(2048), times_reminded int)" self.ex(cmd) ### /reminders ### cmd = "CREATE TABLE IF NOT EXISTS behaviour_classes(id integer primary key autoincrement, name varchar(100), description varchar(2048), attribute varchar(64))" self.ex(cmd) #schema = ['id integer primary key autoincrement', # 'behaviourId int', # 'comment varchar(2048)', # 'time_created varchar(24)', # 'start_at varchar(24)', # 'duration varchar(24)', # 'variance REAL DEFAULT 0.5', # 'FOREIGN KEY(behaviourId) REFERENCES behaviour_classes(name)', # "time_completed varchar(24) DEFAULT '?'" # ] #cmd = "CREATE TABLE IF NOT EXISTS journal(" + " ".join(schema) + ")" cmd = "CREATE TABLE IF NOT EXISTS behaviour_journal(id integer primary key autoincrement, behaviourId int, comment varchar(2048), time_created varchar(24), time_started varchar(24), predicted_duration int, duration int, quality int, source varchar(256), variance REAL DEFAULT 0.5)" self.ex(cmd) #cmd = "CREATE TABLE IF NOT EXISTS journal(id integer primary key autoincrement, behaviourId int, comment varchar(1024), time_created varchar(24), start_at varchar(24), duration int, variance REAL, source varchar(64), FOREIGN KEY(behaviourId) REFERENCES behaviour_classes(id));" #self.ex(cmd) #SELECT journal.id, journal.behaviourId, behaviour_classes.name FROM journal,behaviour_classes WHERE(journal.behaviourId = behaviour_classes.id); ### notes ### ### /notes ### #cmd = "INSERT INTO metadata(key,value) SELECT 'afk_time_sum', 0 WHERE NOT EXISTS(SELECT 1 FROM metadata WHERE key = 'afk_time_sum' AND value != 0)" #self.ex(cmd) #cmd = "INSERT INTO metadata(key,value) SELECT 'slack_time_sum', 0 WHERE NOT EXISTS(SELECT 1 FROM metadata WHERE key = 'slack_time_sum' AND value != 0)" #self.ex(cmd) #cmd = "INSERT INTO metadata(key,value) SELECT 'work_time_sum', 0 WHERE NOT EXISTS(SELECT 1 FROM metadata WHERE key = 'work_time_sum' AND value != 0)" #self.ex(cmd) #cmd = "INSERT INTO metadata(key,value) SELECT 'targeted_task', '' WHERE NOT EXISTS(SELECT 1 FROM metadata WHERE key = 'targeted_task' AND value != '')" #cmd = "CREATE TABLE IF NOT EXISTS activity_time_sum(activity varchar(16), sum_seconds int)" #[!!!] #cmd = "CREATE TABLE IF NOT EXISTS business(... ... ...)" cmd = "CREATE TABLE IF NOT EXISTS expected_behaviour(id integer primary key autoincrement, time_created varchar(24), type varchar(32), policy varchar(32), description varchar(1024), name varchar(256), uuid varchar(36), level int, duration int, time_started varchar(24), time_started_expected varchar(24), time_completed varchar(24), time_completed_expected varchar(24), status varchar(16), priority int)" self.ex(cmd) return True
def wireless_interface(self): ####################### ## Method Works ### ####################### global monitors, adapters query = QtSql.QSqlQuery(db) # need to check if iwconfig exists (it should ) cmd = str(commands.getoutput('iwconfig')) if 'Mode:Managed' in cmd: regex = re.compile('wlan\d', re.IGNORECASE) adapters = regex.findall(cmd) if 'Mode:Monitor' in cmd: regex = re.compile('mon\d', re.IGNORECASE) monitors = regex.findall(cmd) if not (('Mode:Managed') or ('Mode:Monitor')) in cmd: text = ['No Interface'] for i in text: self.adapters_comboBox.addItem(i) if adapters: self.adapters_comboBox.clear() for adap in adapters: self.adapters_comboBox.addItem(adap) self.wlan0_monitor_Button.setVisible(True) # int_iface = str(self.adapters_comboBox.currentText()) comm = str( commands.getoutput("ifconfig " + adap + " | awk '/HWaddr/ {print $1 " " $NF}'")) a = comm.splitlines() for word in a: wor_essid = word[:-17] wor_mac = word[-17:] query.prepare( "insert into adapters (name, bssid, status) values(?,?,?)" ) query.addBindValue(wor_essid) query.addBindValue(wor_mac) query.addBindValue("before") query.exec_() if wor_essid == int_iface: before_intface = wor_essid, wor_mac else: return if monitors: for monit in monitors: self.monitors_comboBox.addItem(monit) self.wlan1_monitor_button.setVisible(True) self.Monitor_select_comboBox.addItem(monit) comm = str( commands.getoutput("ifconfig " + monit + " | awk '/HWaddr/ {print $1 " " $NF}'")) a = comm.splitlines() for word in a: wor_essid = word[:-47] wor_mac = word[-47:-30] wor_mac = wor_mac.replace('-', ':') query.prepare( "insert into monitors (name, bssid) values (?,?)") query.addBindValue(wor_essid) query.addBindValue(wor_mac) query.exec_() if wor_essid == monit: b_m_intface = wor_essid, wor_mac else: return print adapters, monitors # remove after tests
# # author: Jan Bodnar # website: zetcode.com # last edited: October 2009 from PyQt4 import QtCore, QtSql app = QtCore.QCoreApplication([]) db = QtSql.QSqlDatabase.addDatabase("QSQLITE") db.setDatabaseName("friends.db") if not db.open(): print "cannot establish a database connection" else: query = QtSql.QSqlQuery("INSERT INTO friends(" "id, name, age) VALUES (?, ?, ?)") query.bindValue(0, QtCore.QVariant(6)) query.bindValue(1, QtCore.QVariant("Monika")) query.bindValue(2, QtCore.QVariant(23)) query.exec_() query = QtSql.QSqlQuery("SELECT name, age FROM friends") query.last() name = query.value(0).toString() age = query.value(1).toString() print name, age
def execute(self): global db query_c = QtSql.QSqlQuery() str_c = 'select count (*) form from tobackup.t_log s inner join tobackup.t_image m using (tid)' query_c.exec_(str_c) rowsc = 0 allfiles = 0 while query_c.next(): rowsc = query_c.value(0).toInt()[0] allfiles = query_c.value(0).toInt()[0] while rowsc > 0: query = QtSql.QSqlQuery() str1 = u'select time_best,plate_recognized,encode(image,\'hex\'), camera_host, lpr_name, tid from tobackup.t_log s inner join tobackup.t_image m using (tid) limit 100;' query.exec_(str1) count = 0 while query.next(): file_parth = unicode( globalConf.get('options', 'folderpath') + query.value(3).toString() + '/' + re.match('[a-zA-Z0-9 ]+(.*)', unicode(query.value(4).toString())).group(1) + '/' + query.value(0).toDateTime().toString('dd_MM_yy') + '/' + query.value(0).toDateTime().toString('dd_MM_yy hh-mm-ss') + ' ' + query.value(1).toString().replace('?', '_') + '__' + re.match('[a-zA-Z0-9 ]+(.*)', unicode(query.value(4).toString())).group(1) + '_' + query.value(5).toString() + '.jpg') file_parth = file_parth.replace('\\', '/') if os.path.exists( unicode( globalConf.get('options', 'folderpath') + query.value(3).toString())) is False: firstiter = unicode( globalConf.get('options', 'folderpath') + query.value(3).toString()) os.mkdir(firstiter) secstep = globalConf.get( 'options', 'folderpath') + query.value(3).toString() + '/' + re.match( '[a-zA-Z0-9 ]+(.*)', unicode( query.value(4).toString())).group(1) + '/' if os.path.exists(unicode(secstep)) is False: os.mkdir(unicode(secstep)) tridstep = globalConf.get( 'options', 'folderpath') + query.value(3).toString() + '/' + re.match( '[a-zA-Z0-9 ]+(.*)', unicode( query.value(4).toString())).group( 1) + '/' + query.value( 0).toDateTime().toString('dd_MM_yy') + '/' if os.path.exists(unicode(tridstep)) is False: os.mkdir(unicode(tridstep)) file = QtCore.QFile(file_parth) file.open(QtCore.QIODevice.WriteOnly) file.write(str(query.value(2).toString()).decode('hex')) file.close() count += 1 # Удаление query_d = QtSql.QSqlQuery() deletestr = 'delete from tobackup.t_image where tid = ' + query.value( 5).toString() + ';' query_d.exec_(deletestr) rowsc -= count try: flog = open('process.log', 'a') flog.write('Лог за ' + QtCore.QDateTime.currentDateTime().toString( 'dd-MM-yy hh:mm:ss') + '\n') flog.write('===Все файлы ' + str(allfiles) + ' перенесены.===\n') flog.close() except: raise IOError(u'Log file not found')
def ref(self): self.model = QtSql.QSqlQueryModel(self) sql = "select Name, School from student;" self.model.setQuery(sql) self.ui.tableView.setModel(self.model)
def start_click(self): # Получение параметров подключения config.host = self.__ui.conf_host.text() config.mysql_port = int(self.__ui.conf_mysql.text()) config.route_port = int(self.__ui.conf_route.text()) config.upload_port = int(self.__ui.conf_upload.text()) config.db = self.__ui.conf_db.text() config.user = self.__ui.conf_user.text() # Обновление списка файлов, доступных для скачивания # удаленными узлами файлообменной сети self.__filelist = filelist.CFileList() self.__filelist.refresh() # Запуск двух серверов и скачивающего потока try: self.__server = { "route": route.CRouteTable(), "upload": upload.CUpload(), "download": download.CDownload() } for x in self.__server.values(): x.start() except: QtGui.QMessageBox().critical( self, "Ошибка!", "Невозможно запустить один из потоков") return # Настройка параметров подключения к локальному серверу MySQL self.__db.setHostName("localhost") self.__db.setUserName(config.user) self.__db.setDatabaseName(config.db) # Подключение к локальному серверу MySQL if not self.__db.open(): QtGui.QMessageBox().critical( self, "Ошибка!", "Невозможно подключится к локальной базе данных") return # Создание пяти описателей выборок по одной для каждой из пяти моделей # представления результатов выборки self.__query = { "host_list": QtSql.QSqlQuery("""select distinct ip as \"IP\", route_port as \"Route порт\" from """ + tname["route"] + " order by ip, route_port", db=self.__db), "file_list": QtSql.QSqlQuery( "select distinct path as \"Путь и имя файла\" from " + tname["filelist"] + " order by path", db=self.__db), "sea_res": QtSql.QSqlQuery("""select id as \"Номер\", path as \"Имя файла\", size / 1048576 as \"Размер файла (мегабайты)\" from """ + tname["search_result"] + " group by path order by path, size", db=self.__db), "down_list": QtSql.QSqlQuery("""select path as \"Путь и имя файла\", count(*) as \"Доступно частей\" from """ + tname["downlist"] + " group by path order by path", db=self.__db), "down_finish": QtSql.QSqlQuery("select distinct path \"Путь и имя файла\" from " + tname["finished"] + """ where not exists (select * from downlist where downlist.path = finished.path) order by path""", db=self.__db) } # Обновление таблиц графического интерфейса self.refresh_view() self.__ui.conf_host_all.setEnabled(False) self.__ui.conf_reset.setEnabled(False) self.__ui.start.setEnabled(False) self.__ui.conf_host.setEnabled(False) self.__ui.conf_mysql.setEnabled(False) self.__ui.conf_route.setEnabled(False) self.__ui.conf_upload.setEnabled(False) self.__ui.conf_db.setEnabled(False) self.__ui.conf_user.setEnabled(False) self.__ui.stop.setEnabled(True) self.__ui.host_list.setEnabled(True) self.__ui.host_ip.setEnabled(True) self.__ui.host_port.setEnabled(True) self.__ui.host_connect.setEnabled(True) self.__ui.host_disconnect.setEnabled(True) self.__ui.file_list.setEnabled(True) self.__ui.file_add.setEnabled(True) self.__ui.file_del.setEnabled(True) self.__ui.sea_mask.setEnabled(True) self.__ui.sea_size_op.setEnabled(True) self.__ui.sea_size.setEnabled(True) self.__ui.sea_run.setEnabled(True) self.__ui.sea_res.setEnabled(True) self.__ui.sea_down.setEnabled(True) self.__ui.down_list.setEnabled(True) self.__ui.down_del.setEnabled(True) self.__ui.down_finish.setEnabled(True) self.__ui.down_finish_clear.setEnabled(True)
def execute_query(self, params): query = QtSql.QSqlQuery(self.db) query.exec_(params) return query
def createConnection(): db = QtSql.QSqlDatabase.addDatabase('QSQLITE') db.setDatabaseName(':memory:') if not db.open(): QtGui.QMessageBox.critical( None, QtGui.qApp.tr("Cannot open database"), QtGui.qApp.tr("Unable to establish a database connection.\n" "This example needs SQLite support. Please read " "the Qt SQL driver documentation for information " "how to build it.\n\n" "Click Cancel to exit."), QtGui.QMessageBox.Cancel) return False query = QtSql.QSqlQuery() query.exec_("create table person(id int primary key, " "firstname varchar(20), lastname varchar(20))") query.exec_("insert into person values(101, 'Danny', 'Young')") query.exec_("insert into person values(102, 'Christine', 'Holand')") query.exec_("insert into person values(103, 'Lars', 'Gordon')") query.exec_("insert into person values(104, 'Roberto', 'Robitaille')") query.exec_("insert into person values(105, 'Maria', 'Papadopoulos')") query.exec_("create table offices (id int primary key," "imagefile int," "location varchar(20)," "country varchar(20)," "description varchar(100))") query.exec_("insert into offices " "values(0, 0, 'Oslo', 'Norway'," "'Oslo is home to more than 500 000 citizens and has a " "lot to offer.It has been called \"The city with the big " "heart\" and this is a nickname we are happy to live up to.')") query.exec_("insert into offices " "values(1, 1, 'Brisbane', 'Australia'," "'Brisbane is the capital of Queensland, the Sunshine State, " "where it is beautiful one day, perfect the next. " "Brisbane is Australia''s 3rd largest city, being home " "to almost 2 million people.')") query.exec_("insert into offices " "values(2, 2, 'Redwood City', 'US'," "'You find Redwood City in the heart of the Bay Area " "just north of Silicon Valley. The largest nearby city is " "San Jose which is the third largest city in California " "and the 10th largest in the US.')") query.exec_("insert into offices " "values(3, 3, 'Berlin', 'Germany'," "'Berlin, the capital of Germany is dynamic, cosmopolitan " "and creative, allowing for every kind of lifestyle. " "East meets West in the metropolis at the heart of a " "changing Europe.')") query.exec_( "insert into offices " "values(4, 4, 'Munich', 'Germany'," "'Several technology companies are represented in Munich, " "and the city is often called the \"Bavarian Silicon Valley\". " "The exciting city is also filled with culture, " "art and music. ')") query.exec_("insert into offices " "values(5, 5, 'Beijing', 'China'," "'Beijing as a capital city has more than 3000 years of " "history. Today the city counts 12 million citizens, and " "is the political, economic and cultural centre of China.')") query.exec_("create table images (locationid int, file varchar(20))") query.exec_("insert into images values(0, 'images/oslo.png')") query.exec_("insert into images values(1, 'images/brisbane.png')") query.exec_("insert into images values(2, 'images/redwood.png')") query.exec_("insert into images values(3, 'images/berlin.png')") query.exec_("insert into images values(4, 'images/munich.png')") query.exec_("insert into images values(5, 'images/beijing.png')") return True
def saveStatusP(self,id,status,button): sql='UPDATE event SET status_id={},button_result_id={}, user_id={} WHERE(id={} )'.format(status,button,self.UserId,id,) query = QtSql.QSqlQuery(sql) self.tableEventModel.setQuery( self.tableEventModel.query().lastQuery() ) self.br_id=button
def run(self): self.time = time.time() self.query_model = QtSql.QSqlQueryModel() self.query_model.setQuery(self.query, self.connection) self.query_executed.emit(self.query_model)
def SaveEvent(self,info,sensor_id,level_id,user_id,status_id,button_result_id): query = QtSql.QSqlQuery() sql='INSERT INTO event(info,sensor_id, level_id, user_id, status_id, button_result_id)' \ 'VALUES("{}",{},{},{},{},{});'.format(info,sensor_id,level_id,user_id,status_id,button_result_id) query.exec_(sql) self.tableEventModel.setQuery( self.tableEventModel.query().lastQuery() )
def run(self): self.buildGraph() for d in self.days: if (self.time_point != "NULL"): # Simple time constraint if (self.path_tree == False): s = "SELECT tempus_access.shortest_path2((" + str( self.road_node_from ) + "), (" + str(self.road_node_to) + "), ARRAY" + str( self.tran_modes) + ", '" + d + " " + self.time_point[ 1:len(self.time_point) - 1] + "'::timestamp, " + str( self.constraint_date_after) + ");\n" print s self.file.write(s) else: for node in self.road_nodes: # For each source node s = "SELECT tempus_access.shortest_paths_tree(("+str(node)+"), ARRAY"+str(self.tran_modes)+", "+str(self.max_cost)+", "+str(self.walking_speed)+", "+str(self.cycling_speed)+", '"+d \ + " " +self.time_point[1:len(self.time_point)-1]+"'::timestamp, "+str(self.constraint_date_after)+");\n" print s self.file.write(s) else: # Time period constraint if ( self.all_services == True ): # All possible services of the period - only fo simple paths current_timestamp = "" bound_timestamp = "" bound_time = "" if (self.constraint_date_after == True): current_timestamp = d + " " + self.time_start[ 1:len(self.time_start) - 1] bound_timestamp = d + " " + self.time_end[ 1:len(self.time_end) - 1] bound_time = self.time_end elif (self.constraint_date_after == False): current_timestamp = d + " " + self.time_end[ 1:len(self.time_end) - 1] bound_timestamp = d + " " + self.time_start[ 1:len(self.time_start) - 1] bound_time = self.time_start while (current_timestamp != bound_timestamp): s = "SELECT tempus_access.shortest_path2((" + str( self.road_node_from ) + "), (" + str(self.road_node_to) + "), ARRAY" + str( self.tran_modes ) + ", '" + current_timestamp + "'::timestamp, " + str( self.constraint_date_after) + ");\n" print s self.file.write(s) s1 = "SELECT next_pt_timestamp::character varying FROM tempus_access.next_pt_timestamp(" + bound_time + "::time, '" + str( d) + "'::date, " + str( self.constraint_date_after) + ")" print s1 q1 = QtSql.QSqlQuery(self.db) q1.exec_(unicode(s1)) while q1.next(): if (current_timestamp == str(q1.value(0))): current_timestamp = bound_timestamp else: current_timestamp = str(q1.value(0)) elif (self.time_interval != "NULL"): # Search at a regular time interval current_timestamp = "" bound_timestamp = "" bound_time = "" if (self.constraint_date_after == True): current_timestamp = d + " " + self.time_start[ 1:len(self.time_start) - 1] bound_timestamp = d + " " + self.time_end[ 1:len(self.time_end) - 1] bound_time = self.time_end elif (self.constraint_date_after == False): current_timestamp = d + " " + self.time_end[ 1:len(self.time_end) - 1] bound_timestamp = d + " " + self.time_start[ 1:len(self.time_start) - 1] bound_time = self.time_start while (current_timestamp != bound_timestamp): if (self.path_tree == False): s = "SELECT tempus_access.shortest_path((" + str( self.road_node_from ) + "), (" + str( self.road_node_to ) + "), ARRAY" + str( self.tran_modes ) + ", '" + current_timestamp + "'::timestamp, " + str( self.constraint_date_after) + ");\n" print s self.file.write(s) elif (self.path_tree == True): for node in self.road_nodes: # For each source/target node s = "SELECT tempus_access.shortest_paths_tree(" + str( node ) + ", ARRAY" + str( self.tran_modes ) + ", " + str(self.max_cost) + ", " + str( self.walking_speed ) + ", " + str( self.cycling_speed ) + ", '" + current_timestamp + "'::timestamp, " + str( self.constraint_date_after) + ");\n" print s self.file.write(s) s1 = "SELECT next_timestamp::character varying FROM tempus_access.next_timestamp('" + current_timestamp + "'::timestamp, " + str( self.time_interval ) + ", '" + bound_timestamp + "'::timestamp, " + str( self.constraint_date_after) + ")" print s1 q1 = QtSql.QSqlQuery(self.db) q1.exec_(unicode(s1)) while q1.next(): current_timestamp = str(q1.value(0)) print(self.query_str) self.file.write(self.query_str) self.file.close() cmd = [ PSQL, "-h", self.db.hostName(), "-p", str(self.db.port()), "-d", self.db.databaseName(), "-U", self.db.userName(), "-f", self.plugin_dir + "\\scripts\\temp.sql" ] done = execute_external_cmd(cmd) res = False if (done == 0): res = True self.resultAvailable.emit(res)
def enterUsernameLogin(self,index): rec=QtSql.QSqlRecord() rec=self.tmUser.record(index.row()) self.user_login=rec.value("username") self.ui.lineEditPassword.clear()
def _slotPushButtonImportClicked(self): s = "SELECT count(*) from pg_database\ WHERE datname = 'tempusaccess_" + self.ui.lineEditNewDB.text( ) + "'" q = QtSql.QSqlQuery(unicode(s), self.caller.db) q.next() create = True if (int(q.value(0)) > 0): ret = QMessageBox.question( self, "TempusAccess", u"La base de données 'tempusaccess_" + self.ui.lineEditNewDB.text() + u"' existe déjà et va être réinitialisée : toutes les données présentes seront écrasées. \n Confirmez-vous cette opération ?", QMessageBox.Ok | QMessageBox.Cancel, QMessageBox.Cancel) create = False else: ret = QMessageBox.Ok if (ret == QMessageBox.Ok): # Restart database server to be sure deleting "TempusAccess" database will be allowed (avoids still connected applications) nom_fichier = QFileDialog.getOpenFileName( caption="Restaurer la base de données...", directory=self.caller.data_dir, filter="Backup files (*.backup)") if (create == True): cmd = [ "createdb", "-h", self.caller.db.hostName(), "-U", self.caller.db.userName(), "-p", str(self.caller.db.port()), "tempusaccess_" + self.ui.lineEditNewDB.text() ] r = subprocess.call(cmd) self.caller.set_db_connection_dialog.refreshDBList() self.ui.comboBoxDB.setCurrentIndex( self.ui.comboBoxDB.findText(self.ui.lineEditNewDB.text())) s = "DROP SCHEMA IF EXISTS _tempus_import CASCADE;\ DROP SCHEMA IF EXISTS _tempus_export CASCADE;\ DROP SCHEMA IF EXISTS indic CASCADE;\ DROP SCHEMA IF EXISTS tempus CASCADE;\ DROP SCHEMA IF EXISTS tempus_access CASCADE;\ DROP SCHEMA IF EXISTS tempus_gtfs CASCADE;\ DROP FUNCTION IF EXISTS _drop_index(text, text, text);\ DROP FUNCTION IF EXISTS notice(text, anyelement);" q = QtSql.QSqlQuery(self.temp_db) q.exec_(unicode(s)) cmd = [ PGRESTORE, "-h", self.temp_db.hostName(), "-p", str(self.temp_db.port()), "-d", self.temp_db.databaseName(), "-U", self.temp_db.userName(), "-w", "-O", "-x", "-v", nom_fichier ] self.ui.lineEditCommand.setText(" ".join(cmd)) rc = execute_external_cmd(cmd) box = QMessageBox() box.setModal(True) if (rc == 0): self.caller.iface.mapCanvas().refresh() box.setText(u"L'import de la base s'est terminé avec succès. ") self._slotPushButtonLoadClicked() else: box.setText( u"L'import de la base a échoué ou a retourné des avertissements.\nPour en savoir plus, ouvrir la console Python de QGIS et relancer la commande." ) box.exec_()
#db.setDatabaseName("llampex") #db.setUserName("llampexuser") #db.setPassword("llampexpasswd") #db.setHostName("127.0.0.1") #db.setPort(10123) #print ">> Database:",db # #if not db.open(): # print "unable to open database" # sys.exit(1) clientoptions.prepareParser() qsqlrpc.DEBUG_MODE = clientoptions.getDebug() db = clientoptions.getDB() model = QtSql.QSqlTableModel(None, db) initializeModel(model, clientoptions.getTable()) view1 = createView("Table Model (View 1)", model) view2 = createView("Table Model (View 2)", model) view1.show() view2.move(view1.x() + view1.width() + 20, view1.y()) view2.show() app.exec_() del model del view1 del view2
def handle_exec_sql_clicked(self): sql_str = self.text_db_sql.toPlainText() model = QtSql.QSqlQueryModel() model.setQuery(sql_str) self.current_model = model self.table_dbview.setModel(model)
def __init__(self, user, sysdate, code, dateCalc, parent=None): super(NewBond, self).__init__(viewOnly=True, parent=parent) self.setWindowTitle(u'债券交易') self.sysdate = sysdate self.user = user self.dateCalc = dateCalc self.inst = CashBond(code) layout = QtGui.QGridLayout() gbInfo = QtGui.QGroupBox(u'基本信息') gbInfo.setLayout(self.inst.gui(readonly=True, asOfDate=sysdate)) layout.addWidget(gbInfo, 0, 0, 1, 4) gbTrade = QtGui.QGroupBox(u'交易') tradeLayout = QtGui.QGridLayout() tradeLayout.addWidget(QtGui.QLabel(u'交易日'),0, 0, 1, 1) self.tradeDateTime = QtGui.QDateTimeEdit(datetime.datetime.now()) self.tradeDateTime.setCalendarPopup(True) self.tradeDateTime.dateTimeChanged.connect(self.on_tradedate_change) tradeLayout.addWidget(self.tradeDateTime, 0, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'账簿'), 1, 0, 1, 1) self.books = QtGui.QComboBox() q = QtSql.QSqlQuery('SELECT NAME_CN FROM BOOKS ORDER BY ID') books = [] while q.next(): books.append(q.value(0).toString()) self.books.addItems(books) tradeLayout.addWidget(self.books, 1, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'交易方向'), 0, 2, 1, 1) self.dir = QtGui.QComboBox() self.dir.addItems([u'买入', u'卖出']) tradeLayout.addWidget(self.dir, 0, 3, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'面值(万元)'), 2, 0, 1, 1) self.amount = QtGui.QLineEdit() tradeLayout.addWidget(self.amount, 2, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'成交T+'), 1, 2, 1, 1) self.settle = QtGui.QLineEdit('0') self.settle.setValidator(QtGui.QIntValidator()) self.settle.textChanged.connect(self.updateSettleDate) tradeLayout.addWidget(self.settle, 1, 3, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'交割日'), 2, 2, 1, 1) self.settleDate = QtGui.QDateEdit(self.sysdate) self.settleDate.setCalendarPopup(True) tradeLayout.addWidget(self.settleDate, 2, 3, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'估值'), 3, 0, 1, 1) self.value = QtGui.QLineEdit() self.value.setReadOnly(True) tradeLayout.addWidget(self.value, 3, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'估值日'), 3, 2, 1, 1) self.vdate = QtGui.QDateEdit(self.sysdate - datetime.timedelta(days=1)) self.vdate.setCalendarPopup(True) self.vdate.dateChanged.connect(self.updateValue) tradeLayout.addWidget(self.vdate, 3, 3, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'久期'), 4, 0, 1, 1) self.moddur = QtGui.QLineEdit() self.moddur.setReadOnly(True) tradeLayout.addWidget(self.moddur, 4, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'到期收益率(%)'), 4, 2, 1, 1) self.ytm = QtGui.QLineEdit() tradeLayout.addWidget(self.ytm, 4, 3, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'净价'), 5, 0, 1, 1) self.clean = QtGui.QLineEdit() tradeLayout.addWidget(self.clean, 5, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'全价'), 5, 2, 1, 1) self.full = QtGui.QLineEdit() tradeLayout.addWidget(self.full, 5, 3, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'备注'), 6, 0, 1, 1) self.comment = QtGui.QLineEdit() tradeLayout.addWidget(self.comment, 6, 1, 1, 1) tradeLayout.addWidget(QtGui.QLabel(u'应计利息'), 6, 2, 1, 1) self.ai = QtGui.QLineEdit() self.ai.setReadOnly(True) tradeLayout.addWidget(self.ai, 6, 3, 1, 1) gbTrade.setLayout(tradeLayout) layout.addWidget(gbTrade, 1, 0, 1, 4) btnLayout = QtGui.QHBoxLayout() btnLayout.addWidget(self.ok) btnLayout.addWidget(self.cancel) layout.addLayout(btnLayout, 2, 2, 1, 2) self.updateInfo() self.setLayout(layout)
def buildItemsCache(self): emptyValue = QtSql.QSqlRecord() rowCount = self.rowCount() for tripodNumber in xrange(self._tripodCount): self._mapTripodNumberToItems[tripodNumber] = [emptyValue]*rowCount
def obtenerAutocompletar(concepto): query = QtSql.QSqlQuery() consulta = "SELECT DISTINCT " + concepto + " FROM " + nombreTabla query.exec_(consulta) print query
def __init__(self, parent=None, viewOnly=False, **kwargs): super(NewSubscription, self).__init__(parent, viewOnly, **kwargs) self.standardtenors = [ '14', '30', '60', '90', '120', '150', '180', '210', '240', '270', '300', '330', '360', '720' ] self.setWindowTitle(u'添加认购信息') td = datetime.date.today() layout = QtGui.QGridLayout() layout.addWidget(QtGui.QLabel(u'客户类型'), 0, 0, 1, 1) q = QtSql.QSqlQuery('SELECT TYPE_NAME FROM CLIENT_TYPE') names = [] while q.next(): names.append(q.value(0).toString()) self.clientType = QtGui.QComboBox() if names: self.clientType.addItems(names) layout.addWidget(self.clientType, 0, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'委托人名称'), 1, 0, 1, 1) self.clientname = QtGui.QComboBox() clientnames = [] q = QtSql.QSqlQuery('SELECT DISTINCT CLIENT_NAME FROM LIABILITY') while q.next(): clientnames.append(q.value(0).toString()) if clientnames: self.clientname.addItems(clientnames) self.clientname.setEditable(True) layout.addWidget(self.clientname, 1, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'销售类型:'), 2, 0, 1, 1) self.salebtn = QtGui.QButtonGroup() self.rbDirect = QtGui.QRadioButton(u'直销(A)') self.rbIndirect = QtGui.QRadioButton(u'代销(B)') self.salebtn.addButton(self.rbDirect) self.salebtn.addButton(self.rbIndirect) self.rbDirect.setChecked(True) self.gbsaletype = QtGui.QGroupBox() layout_gbsaletype = QtGui.QHBoxLayout() layout_gbsaletype.addWidget(self.rbDirect) layout_gbsaletype.addWidget(self.rbIndirect) self.gbsaletype.setLayout(layout_gbsaletype) layout.addWidget(self.gbsaletype, 2, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'认购金额(元)'), 3, 0, 1, 1) self.amount = QtGui.QLineEdit() self.amount.setValidator(QtGui.QDoubleValidator(0., 10000000000., 2)) self.amount.textChanged.connect(self.calc_totalrtn) layout.addWidget(self.amount, 3, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'预期收益率(%)'), 4, 0, 1, 1) self.rtn = QtGui.QLineEdit() self.rtn.setValidator(QtGui.QDoubleValidator(0., 100., 2)) self.rtn.textChanged.connect(self.calc_totalrtn) layout.addWidget(self.rtn, 4, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'认购日'), 5, 0, 1, 1) self.subdate = QtGui.QDateEdit(td) self.subdate.setCalendarPopup(True) self.subdate.dateChanged.connect(self.datecheck) layout.addWidget(self.subdate, 5, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'封闭期起始日'), 6, 0, 1, 1) self.settledate = QtGui.QDateEdit(td) self.settledate.setCalendarPopup(True) self.settledate.dateChanged.connect(self.datecheck) layout.addWidget(self.settledate, 6, 1, 1, 1) self.gbtenor = QtGui.QGroupBox(u'认购期限') self.tenorbtn = QtGui.QButtonGroup() self.rbX = QtGui.QRadioButton(u'标准期限(X型)') self.rbY = QtGui.QRadioButton(u'订制期限(Y型)') self.rbH = QtGui.QRadioButton(u'活期(H型)') self.tenorbtn.addButton(self.rbX) self.tenorbtn.addButton(self.rbY) self.tenorbtn.addButton(self.rbH) self.tenorbtn.buttonClicked.connect(self.tenorbtn_clicked) self.rbX.setChecked(True) layout_tenor = QtGui.QGridLayout() layout_tenor.addWidget(self.rbX, 0, 0, 1, 1) layout_tenor.addWidget(self.rbY, 1, 0, 1, 1) layout_tenor.addWidget(self.rbH, 2, 0, 1, 1) self.xtenors = QtGui.QComboBox() self.xtenors.addItems(self.standardtenors) self.xtenors.currentIndexChanged.connect(self.tenor_update) layout_tenor.addWidget(self.xtenors, 0, 1, 1, 1) layout_tenor.addWidget(QtGui.QLabel(u'天'), 0, 2, 1, 1) self.ytenors = QtGui.QLineEdit() self.ytenors.setEnabled(False) self.ytenors.setValidator(QtGui.QIntValidator()) self.ytenors.textChanged.connect(self.tenor_update) layout_tenor.addWidget(self.ytenors, 1, 1, 1, 1) layout_tenor.addWidget(QtGui.QLabel(u'天'), 1, 2, 1, 1) self.gbtenor.setLayout(layout_tenor) layout.addWidget(self.gbtenor, 7, 0, 1, 2) layout.addWidget(QtGui.QLabel(u'封闭期到期日'), 8, 0, 1, 1) self.expdate = QtGui.QDateEdit(td + datetime.timedelta(days=13)) self.expdate.setCalendarPopup(True) self.expdate.dateChanged.connect(self.datecheck) layout.addWidget(self.expdate, 8, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'到期操作'), 9, 0, 1, 1) self.expops = QtGui.QComboBox() q = QtSql.QSqlQuery('SELECT OPS_NAME FROM EXPOPS_TYPE') opstypes = [] while q.next(): opstypes.append(q.value(0).toString()) if opstypes: self.expops.addItems(opstypes) self.expops.setCurrentIndex(2) layout.addWidget(self.expops, 9, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'申请书编号'), 10, 0, 1, 1) self.subcode = QtGui.QLineEdit() self.subcode.textChanged.connect(self.check_subcode) layout.addWidget(self.subcode, 10, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'到期本息'), 11, 0, 1, 1) self.totalrtn = QtGui.QLineEdit() self.totalrtn.setEnabled(False) layout.addWidget(self.totalrtn, 11, 1, 1, 1) layout.addWidget(QtGui.QLabel(u'备注'), 12, 0, 1, 1) self.comment = QtGui.QLineEdit() layout.addWidget(self.comment, 12, 1, 1, 1) layout_okcancel = QtGui.QHBoxLayout() layout_okcancel.addWidget(self.cancel) layout_okcancel.addWidget(self.ok) layout.addLayout(layout_okcancel, 13, 0, 1, 2) self.setLayout(layout)
def insertMonster(self, Nome, Tipo, Allineamento, Taglia, GS, PE, Iniziativa, Sensi, CA, PF, Tempra, Riflessi, Volontà, Resistenze, Velocità, Attacco_mischia, Attacco_distanza, Attacchi_speciali, Incantesimi, Portata, Linguaggi, Forza, Destrezza, Costituzione, Intelligenza, Saggezza, Carisma, AB, BMC, DMC, Talenti, Abilità, QS, Ambiente, Tesoro, CS, Descrizione, Path_Immagine, Path_Tabelle, Path_Icona): query = QtSql.QSqlQuery() query.prepare( "insert into Mostro (Nome, Tipo,Allineamento,Taglia,GS, PE,Iniziativa,Sensi,CA, " "PF,Tempra,Riflessi,Volontà, Resistenze,Velocità,Attacco_mischia,Attacco_distanza, " "Attacchi_speciali,Incantesimi,Portata,Linguaggi, " "Forza,Destrezza,Costituzione,Intelligenza, Saggezza,Carisma,AB,BMC, DMC,Talenti,Abilità,QS, " "Ambiente,Tesoro,CS,Descrizione,Immagine,Tabelle,Icona) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, " "?, ?, ?, ?, ?, ?, ?, ?, ?, ?," "?, ?, ?, ?, ?, ?, ?, ?, ?, ?," "?, ?, ?, ?, ?, ?, ?, ?, ?, ?)") # Immagine pixmapImg = QPixmap(Path_Immagine) bytesImg = QByteArray() bufferImg = QBuffer(bytesImg) bufferImg.open(QIODevice.WriteOnly) pixmapImg.save(bufferImg, "jpg") # Tabelle pixmapTab = QPixmap(Path_Tabelle) bytesTab = QByteArray() bufferTab = QBuffer(bytesTab) bufferTab.open(QIODevice.WriteOnly) pixmapTab.save(bufferTab, "jpg") # Icona pixmapIcon = QPixmap(Path_Icona) bytesIcon = QByteArray() bufferIcon = QBuffer(bytesIcon) bufferIcon.open(QIODevice.WriteOnly) pixmapIcon.save(bufferIcon, "jpg") query.bindValue(0, Nome) query.bindValue(1, Tipo) query.bindValue(2, Allineamento) query.bindValue(3, Taglia) query.bindValue(4, GS) query.bindValue(5, PE) query.bindValue(6, Iniziativa) query.bindValue(7, Sensi) query.bindValue(8, CA) query.bindValue(9, PF) query.bindValue(10, Tempra) query.bindValue(11, Riflessi) query.bindValue(12, Volontà) query.bindValue(13, Resistenze) query.bindValue(14, Velocità) query.bindValue(15, Attacco_mischia) query.bindValue(16, Attacco_distanza) query.bindValue(17, Attacchi_speciali) query.bindValue(18, Incantesimi) query.bindValue(19, Portata) query.bindValue(20, Linguaggi) query.bindValue(21, Forza) query.bindValue(22, Destrezza) query.bindValue(23, Costituzione) query.bindValue(24, Intelligenza) query.bindValue(25, Saggezza) query.bindValue(26, Carisma) query.bindValue(27, AB) query.bindValue(28, BMC) query.bindValue(29, DMC) query.bindValue(30, Talenti) query.bindValue(31, Abilità) query.bindValue(32, QS) query.bindValue(33, Ambiente) query.bindValue(34, Tesoro) query.bindValue(35, CS) query.bindValue(36, Descrizione) query.bindValue(37, bytesImg) query.bindValue(38, bytesTab) query.bindValue(39, bytesIcon) query.exec_()