Пример #1
0
def fill_all(info, form_author=config.default_author, fp_sel='0'):
    global author
    # Create dict from coloumns
    field = {}
    for col in DBstructure.colNames:
        field[col.replace(' ', '_')] = None

    # Fill the fields
    author = form_author
    spec(field, info)

    # Connect DB
    conn, cur = db_connect()
    subclass(field, info, conn, cur)
    fp_list = fp(field, conn, cur, fp_sel)
    db_disconnect(conn, cur)

    # Generate datasheet path
    ds(field)

    # if not field['Component_Kind']:
    #     print('Mandatory field \'Component Kind\' not found')
    #     field['Component_Kind'] = selection(DBstructure.tables, 'Component Kind', mandatory = True)

    return field, fp_list
Пример #2
0
def storage_update(table, part, cell, qty):
    conn, cur = db_connect()
    upd_query = 'UPDATE ' + table + ' SET `Storage Cell` = ?, `Storage Quantity` = ? WHERE `Part Number` LIKE ?'
    cur.execute(upd_query, (cell, str(qty), part))
    conn.commit()
    db_disconnect(conn, cur)
    return True
Пример #3
0
def add_part(field):
    # Firstly try to download datasheet
    print(field['datasheet_url'])
    if field['datasheet_url']:
        if field['datasheet_url'] != 'None':
            # Fix 'HTTP Error 403' from https://stackoverflow.com/a/36663971
            opener = urllib.request.build_opener()
            opener.addheaders = [(
                'User-Agent',
                'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1941.0 Safari/537.36'
            )]
            urllib.request.install_opener(opener)

            print('Downloading datasheet ...')
            try:
                urllib.request.urlretrieve(field['datasheet_url'],
                                           field['HelpURL'])
            except Exception as e:
                print('Download failed', e)
                return 'Downloading datasheet failed: ' + str(e)
            else:
                print('Download successful')
        else:
            field['HelpURL'] = ''
    else:
        field['HelpURL'] = ''

    # Add to database
    # Convert dict to sorted tuple for universal INSERT syntax
    insList = []
    for col in DBstructure.colNames:
        insList.append(field[col.replace(' ', '_')])
    insTuple = tuple(insList)

    # Then choose a table
    if field['Component_Kind'] == 'Semiconductors':
        skillet = DBstructure.tupleInsSemiconductors
    elif field['Component_Kind'] == 'Passives':
        skillet = DBstructure.tupleInsPassives
    elif field['Component_Kind'] == 'Electromechanical':
        skillet = DBstructure.tupleInsElectromechanical
    else:
        return 'No table like \'Component Kind\' in DB'

    #  And then make a record
    try:
        conn, cur = db_connect()
        cur.execute(skillet, insTuple)
        conn.commit()
        db_disconnect(conn, cur)
    except Exception as e:
        return 'Database error'

    return 'Component added'
Пример #4
0
def local(keyword):
    conn, cur = db_connect()

    db_result = []
    if keyword:
        print('Search in DB Lib ...')
        idx = 0
        findkey = '%' + keyword + '%'

        cur.execute(
            '''(SELECT `Part Number`, `Part Description`, Author, CreateDate, `Storage Cell`, `Storage Quantity`
                           FROM Semiconductors
                           WHERE `Part Number` LIKE ?)''', findkey)

        for item in cur.fetchall():
            db_result.append(['Semiconductors'])
            for col in item:
                db_result[idx].append(col)
            idx += 1

        cur.execute(
            '''(SELECT `Part Number`, `Part Description`, Author, CreateDate, `Storage Cell`, `Storage Quantity`
                           FROM Passives
                           WHERE `Part Number` LIKE ?)''', findkey)

        for item in cur.fetchall():
            db_result.append(['Passives'])
            for col in item:
                db_result[idx].append(col)
            idx += 1

        cur.execute(
            '''(SELECT `Part Number`, `Part Description`, Author, CreateDate, `Storage Cell`, `Storage Quantity`
                           FROM Electromechanical
                           WHERE `Part Number` LIKE ?)''', findkey)

        for item in cur.fetchall():
            db_result.append(['Electromechanical'])
            for col in item:
                db_result[idx].append(col)
            idx += 1

    db_disconnect(conn, cur)
    return db_result
Пример #5
0
def res_yageo():
    conn, cur = db_connect()
    cur.execute('''SELECT `Part Number`, `Manufacturer Part Number`
                        FROM Passives
                        WHERE `Table` LIKE \'%Resistors SMD%\'''')

    total = 0
    success = 0

    for item in cur.fetchall():
        pn = '--'
        if item[0] == item[1]:
            total += 1
            parm = item[0].split('_')

            if parm is not None:
                if len(parm) >= 5:
                    # R0805_1M24_1%_0.125W_200PPM
                    case = parm[0][1:]
                    val = parm[1]
                    power = parm[3]
                    drift = parm[4]

                    if parm[2] == '0.1%':
                        tol = 'F'
                        # tol = 'B' # Not present in Yageo products
                    elif parm[2] == '0.5%':
                        tol = 'F'
                        # tol = 'D' # Not present in Yageo products
                    elif parm[2] == '1%':
                        tol = 'F'
                    elif parm[2] == '5%':
                        tol = 'J'
                    else:
                        continue

                    pn = 'RC{}{}R-07{}L'.format(case, tol,
                                                val)  # RC0805FR-074K99L
                    success += 1

                    dt = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    upd_query = 'UPDATE Passives SET `Manufacturer1 Example` = ?, `Manufacturer1 Part Number` = ?, `LatestRevisionDate` = ? WHERE `Part Number` LIKE ?'
                    # print('YAGEO', pn, dt, item[0])
                    cur.execute(upd_query, ('YAGEO', pn, dt, item[0]))
Пример #6
0
def cap_yageo():
    conn, cur = db_connect()
    cur.execute('''SELECT `Part Number`, `Manufacturer Part Number`
                        FROM Passives
                        WHERE `Table` LIKE \'%Capacitors SMD%\'''')

    total = 0
    success = 0
    case_lst = [
        'CC0201', 'CC0402', 'CC0603', 'CC0805', 'CC1206', 'CC1210', 'CC1812'
    ]

    for item in cur.fetchall():
        pn = '--'
        if item[0] == item[1] and item[0][:2] == 'CC':
            total += 1
            sgn = 0
            pack = 'R'
            parm = item[0].split('_')

            if parm is not None:
                if len(parm) >= 5:
                    # CC0805_1UF_25V_10%_X7R

                    diel = parm[4]
                    case = parm[0]
                    if ((diel == 'X7R' and case not in case_lst)
                            or (diel == 'X5R' and case not in case_lst[:-1])
                            or (diel not in ['X7R', 'X5R'])):
                        continue

                    # 0201 .. 1206
                    # if THICKNESS > 0.85 => blister (K)
                    # 0805 - EB
                    # 1206 - F1, FA, FC, FD
                    # 1210 .. 1812
                    # blister only (K)

                    if case in ['CC1210', 'CC1812']:
                        pack = 'K'

                    origval = parm[1][:-2]
                    if isnum(origval):
                        sgn = float(origval)
                        if parm[1][-2] == 'P':
                            if sgn >= 100.0:
                                val = str(int(sgn / 10)) + '1'
                            else:
                                continue

                        elif parm[1][-2] == 'N':
                            if case == 'CC0805':
                                if (parm[2] == '50V'
                                        and origval == '220') or (sgn > 220.0):
                                    pack = 'K'

                            if diel == 'X5R' and parm[
                                    3] == '20%' and sgn > 220.0:
                                continue

                            if sgn < 10.0:
                                val = str(int(sgn * 10)) + '2'
                            elif sgn < 100.0:
                                val = str(int(sgn)) + '3'
                            else:
                                val = str(int(sgn / 10)) + '4'

                        elif parm[1][-2] == 'U' and parm[3] != '5%':
                            if case == 'CC0805':
                                pack = 'K'

                            if sgn < 10.0:
                                val = str(int(sgn * 10)) + '5'
                            elif sgn < 100.0:
                                val = str(int(sgn)) + '6'
                            else:
                                continue
                        else:
                            continue
                    else:
                        continue

                    if parm[2] == '6.3V':
                        vol = '5'
                    elif parm[2] == '10V':
                        vol = '6'
                    elif parm[2] == '16V':
                        if case == 'CC0201' and diel == 'X5R':
                            continue
                        else:
                            vol = '7'
                    elif parm[2] == '25V':
                        vol = '8'
                    elif parm[2] == '50V':
                        vol = '9'
                    else:
                        continue

                    if parm[3] == '5%':
                        tol = 'J'
                    elif parm[3] == '10%':
                        tol = 'K'
                    elif parm[3] == '20%':
                        tol = 'M'
                    else:
                        continue

                    pn = '{}{}{}{}{}BB{}'.format(case, tol, pack, diel, vol,
                                                 val)  # CC0805KRX7R9BB102
                    success += 1

                    dt = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
                    upd_query = 'UPDATE Passives SET `Manufacturer1 Example` = ?, `Manufacturer1 Part Number` = ?, `LatestRevisionDate` = ? WHERE `Part Number` LIKE ?'
                    # print('YAGEO', pn, dt, item[0])
                    cur.execute(upd_query, ('YAGEO', pn, dt, item[0]))