예제 #1
0
 def initDatabase(self):
     Log.info('初始化数据库', 'Start')
     self.database = QtSql.QSqlDatabase.addDatabase('QSQLITE')
     self.database.setDatabaseName('data.db')
     self.database.open()
     query = QSqlQuery()
     query.prepare(
         "create table if not exists user(id integer primary key autoincrement, userName varchar(64), password varchar(32), isRemember int default(0), loginTime TIMESTAMP default (datetime('now', 'localtime')));"
     )
     if not query.exec_():
         query.lastError()
         Log.info('初始化数据库', 'Error')
     else:
         Log.info('初始化数据库', 'Seccsess')
     query.clear()
     query.prepare(
         'select userName,password,isRemember,MAX(loginTime) from user;')
     query.exec_()
     while query.next():
         acc, pwd, isCheck, time = query.value(0), query.value(
             1), query.value(2), query.value(3)
         print('acc={},pwd={},isCheck={},time={}\n'.format(
             acc, pwd, isCheck, time))
         if isCheck == 1:
             self.loginAccount.setText(acc)
             self.loginPwd.setText(pwd)
             self.remeberPwd.setChecked(True)
예제 #2
0
def db_update_board_swrev(db, value):
    query = QSqlQuery(db)
    qrytxt = "UPDATE tblSmbParams SET VALUE = {v}  WHERE NAME = \'SOFTWARE_REV\'".format(
        v=value)
    dbLogger.info(qrytxt)
    query.exec_(qrytxt)
    query.clear()
예제 #3
0
def db_update_board_id(db, value):
    query = QSqlQuery(db)
    qrytxt = "UPDATE tblSmbParams SET VALUE = {v}  WHERE NAME = \'BOARD_ID\'".format(
        v=value)
    dbLogger.info(qrytxt)
    query.exec_(qrytxt)
    query.clear()
예제 #4
0
    def update_components(self, id, tickets):
        # TODO: capturar excepciones de error que se pueden dar
        query = QSqlQuery()
        self.connection.open()
        sql = """DELETE FROM customnetwork_component
                 WHERE customnetwork_id = ?;
              """
        query.prepare(sql)
        query.addBindValue(id)
        ok = query.exec_()
        if ok:
            for ticket in tickets:
                sql = "SELECT id, ticket FROM component WHERE ticket = '{}';"\
                    .format(ticket)
                if query.exec_() and query.next():
                    component_id = int(query.value(0))
                    query.clear()
                    sql = """INSERT into customnetwork_component
                    VALUES (?, ?);
                    """
                    query.prepare(sql)
                    query.addBindValue(component_id)
                    query.exec_()
                else:
                    comp_id = self._insert_component_table(query, ticket)
                    ok = self.\
                        _insert_customernetwork_component_table(query,
                                                                id,
                                                                comp_id)

        self.model.select()
        self.connection.close()
        return ok
예제 #5
0
 def insertMsg(self, userName, isSelf, chatWith, messageFrom,
               messageContext, createTime):
     try:
         query = QSqlQuery()
         sql = "insert into message(userName, isSelf, chatWith, messageFrom , messageContext,createTime) values('{}',{},'{}','{}','{}',{});".format(
             userName, isSelf, chatWith, messageFrom, messageContext,
             createTime)
         print(
             "userName={},isSelf={},chatWith={},messageFrom={},messageContext={},createTime={}"
             .format(userName, isSelf, chatWith, messageFrom,
                     messageContext, createTime))
         query.prepare(sql)
         # query.bindValue(userName)
         # query.bindValue(isSelf)
         # query.bindValue(chatWith)
         # query.bindValue(messageFrom)
         # query.bindValue(messageContext)
         # query.bindValue(createTime)
         if not query.exec_():
             print("插入出错")
             query.lastError()
         else:
             print("插入成功")
         query.clear()
         del query
     except Exception:
         return
예제 #6
0
def db_software_rev(db):
    query = QSqlQuery(db)
    qrytxt = "SELECT VALUE from tblSmbParams WHERE NAME= \'SOFTWARE_REV\'"
    query.exec_(qrytxt)
    if query.first():
        id = query.value(0)
    query.clear()
    return id
예제 #7
0
def db_fetch_board_id(db):
    query = QSqlQuery(db)
    qrytxt = "SELECT VALUE from tblSmbParams WHERE NAME= \'BOARD_ID\'"
    query.exec_(qrytxt)
    if query.first():
        id = query.value(0)
    query.clear()
    return id
예제 #8
0
    def getSort(self):
        query = QSqlQuery(self.db)
        query.prepare("SELECT sort FROM sections WHERE name=?")
        query.addBindValue(self.name)
        query.exec_()
        if query.first():
            data = query.record().value(0)
            if data:
                self.sort = bool(data)
            else:
                self.sort = False
        query.clear()

        return self.sort
    def getSort(self):
        query = QSqlQuery(self.db)
        query.prepare("SELECT sort FROM sections WHERE name=?")
        query.addBindValue(self.name)
        query.exec_()
        if query.first():
            data = query.record().value(0)
            if data:
                self.sort = bool(data)
            else:
                self.sort = False
        query.clear()

        return self.sort
예제 #10
0
    def _get_media_pixmap(self, _id, option: 'QStyleOptionViewItem',
                          size: QSize) -> QPixmap:
        global PIXMAP_CACHE_MISS, PIXMAP_CACHE_HITS
        pix = QPixmapCache.find(str(_id))
        if pix is not None:
            PIXMAP_CACHE_HITS += 1
            return pix
        PIXMAP_CACHE_MISS += 1

        text_url_query = QSqlQuery()
        text_url_query.prepare(
            'select url from MediaLocations where media_id = ? AND url LIKE "data:,%" LIMIT 1;'
        )
        text_url_query.bindValue(0, _id)

        if not text_url_query.exec():
            raise RuntimeError
        if text_url_query.first():
            text = text_url_query.value(0).split('data:,', 1)[1]
            pix = QPixmap(size)
            painter = QPainter(pix)

            c = option.palette.base().color()
            painter.fillRect(pix.rect(), c)

            # painter.setFont( QFont("Arial") );
            c = option.palette.text().color()
            painter.setPen(c)
            painter.drawText(
                pix.rect().marginsRemoved(QMargins(5, 5, 5, 5)),
                # Qt.TextWrapAnywhere | Qt.TextJustificationForced,
                Qt.TextWordWrap,
                text)
        else:
            thumb_query = QSqlQuery()
            thumb_query.prepare(
                'select thumbnail from Thumbnails where media_id = ?;')
            thumb_query.bindValue(0, _id)

            if not thumb_query.exec():
                raise RuntimeError
            if not thumb_query.first():
                raise KeyError
            pxb = thumb_query.value(0)
            if len(pxb) < 10:
                raise ValueError(len(pxb))
            assert isinstance(pxb, QByteArray), type(pxb)
            # pxd = marshal.loads(zlib.decompress(pxb.data()))['jpeg']
            pxd = pxb
            pix = QPixmap()
            pix.loadFromData(pxd)
            pix = pix.scaled(size, Qt.KeepAspectRatioByExpanding)

            thumb_query.clear()

        QPixmapCache.insert(str(_id), pix)

        text_url_query.clear()

        # print(f'PIXMAP_CACHE_HITS/TOTAL = {PIXMAP_CACHE_HITS/(PIXMAP_CACHE_HITS+PIXMAP_CACHE_MISS):.0%}')
        return pix
예제 #11
0
파일: dbase.py 프로젝트: valeriy67/Cquality
class DbData():
    def __init__(self):
        self.createConnection()
        self.query = QSqlQuery()
        return None

    def createConnection(self):
        self.con = QSqlDatabase.addDatabase('QODBC')
        # self.con.setConnectOptions('CharSet="cp1251"')
        self.con.setDatabaseName('farmadb_mdb')
        if not self.con.open():
            QMessageBox.critical(None, "Cannot open database", "Cannot open database.", QMessageBox.Cancel)
            return False
        return True

    def queryTypeProd(self):
        # self.query = QSqlQuery()
        self.query.exec("SELECT TypeData FROM PType")
        strType = []
        while self.query.next():
            strType = strType + [self.query.value(0)]
        return strType

    def queryNamePrep(self, sqlstr):
        # self.query = QSqlQuery()
        strsql = "SELECT Id FROM PType WHERE TypeData="+"'"+sqlstr+"'"
        self.query.exec(strsql)
        self.query.next()
        idT = self.query.value(0)

        sqlstr1 = "SELECT PName FROM Preparation WHERE TypeId="+str(idT)
        self.query.exec(sqlstr1)
        strName = ['']
        while self.query.next():
            strName = strName + [self.query.value(0)]
        return strName

    def queryNameSign(self, sqlstr):
        # self.query = QSqlQuery()
        self.query.clear()
        strsql = "SELECT Id FROM Preparation WHERE PName="+"'"+sqlstr+"'"
        self.query.exec(strsql)
        self.query.next()
        idP = self.query.value(0)
        # print(self.query.lastError().text().encode('utf-8').decode('cp1251'))
        sqlstr1 = "SELECT SigName FROM Significat WHERE PNameId="+str(idP)
        self.query.exec(sqlstr1)
        strName = ['']
        while self.query.next():
            strName = strName + [self.query.value(0)]
        return strName

    def queryIdPrepSing(self, strName, strSign):
        # Отримуємо ID препарата
        self.query.clear()
        sqlPrep = "SELECT Id FROM Preparation WHERE PName='"+strName+"'"
        self.query.exec(sqlPrep)
        self.query.next()
        idPrep = self.query.value(0)
        # Отримуємо ID показника
        self.query.clear()
        sqlSign = "SELECT Id FROM Significat WHERE (PNameId=" + str(idPrep) +" AND SigName='" + strSign+"')"
        # print(sqlSign.encode('utf-8').decode('cp1251'))
        self.query.exec(sqlSign)
        self.query.next()
        idSign = self.query.value(0)
        resultData = (idPrep, idSign)
        return resultData

    def queryGetYear(self):
        self.query.clear()
        self.query.exec("SELECT YData FROM Yeartable ORDER BY YData DESC")
        strYear = []
        while self.query.next():
            strYear = strYear + [self.query.value(0)]
        return strYear

    def queryGetCountRec(self):
        pass

    def queryGetDataPrep(self, nameId, signId, yearId, typeProg):
        self.query.clear()
        if typeProg:
            sqlstr = "SELECT ReadyData FROM Pdata WHERE ((PNameId="+str(nameId)+")"+" AND (SNameId="+str(signId)+") AND (YearId='"+str(yearId)+"'))"
        else:
            sqlstr = "SELECT PrepData FROM Pdata WHERE ((PNameId="+str(nameId)+")"+" AND (SNameId="+str(signId)+") AND (YearId='"+str(yearId)+"'))"

        self.query.exec(sqlstr)
        # self.query.next()
        getData = []
        while self.query.next():
            tmpData = self.query.value(0)
            if tmpData != '':
                  getData = getData + [float(tmpData)]
        self.query.clear()
        sqlcount = "SELECT COUNT(*) FROM Pdata WHERE ((PNameId="+str(nameId)+")" \
                 " AND (SNameId="+str(signId)+") AND (YearId='"+str(yearId)+"'))"
        self.query.exec(sqlcount)
        self.query.next()
        countData = int(self.query.value(0))
        return (countData, getData)


    def queryGetDataSign(self, nameId, signId):

        '''
        :param nameId: індекс препарата
        :param signId: назва показника
        :return SMax, SMin, OnlyReady, верхня межа, нижня межа, тип готова, проміжна:
        '''
        self.query.clear()
        sqlstr = "SELECT SMax, SMin, OnlyReady FROM Significat WHERE ((PNameId={0}) AND (Id={1}))".format(nameId, str(signId))
        self.query.exec(sqlstr)
        self.query.next()
        getData = (float(self.query.value(0)), float(self.query.value(1)), bool(self.query.value(2)))
        self.query.clear()
        return getData

    def __del__(self):
        self.con.close()
        return None