Как избежать ошибки SQLite с кодировкой UTF-8? - PullRequest
0 голосов
/ 10 января 2019

Я столкнулся с некоторыми проблемами в Python 3 с sqlite3.

Я хочу сбросить следующие данные:

list_of_Switch=[['GCGCGCG', 'UUUUUGGCGCGCGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-22.0951316, '..........(((((.((((.((.....)).).))))))))((((...))))....', -19.8, 0.1478, '........(((((.(((..(.((.....)).).))))))))((((...))))....', -19.1, 0.04747], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC'], ['UUUGCGCG', 'UUUUUGUUUGCGCGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-24.8290881, '...........(((((.((((.((.....)).).))))))))((((...))))....', -19.8, 0.102, '.........(((((.(((..(.((.....)).).))))))))((((...))))....', -18.8, 0.02013], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC'], ['UGCGCG', 'UUUUUGUGCGCGGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-20.5603754, '.......(((((((.((.....))....)))))))((((...))))....', -19.5, 0.5145, '.......(((((((..............)))))))((((...))))....', -18.6, 0.1195], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC'], ['UUUGCGCG', 'UUUUUGUUUGCGCGGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-23.6414287, '.........(((((((.((.....))....)))))))((((...))))....', -19.5, 0.4877, '.........(((((((..............)))))))((((...))))....', -18.6, 0.1132], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC'], ['UUUGCGCG', 'UUUUUGUUUGCGCGGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-23.6414287, '.........(((((((.((.....))....)))))))((((...))))....', -19.5, 0.4877, '.........(((((((..............)))))))((((...))))....', -18.6, 0.1132], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC'], ['UUUGCGCG', 'UUUUUGUUUGCGCGGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-23.6414287, '.........(((((((.((.....))....)))))))((((...))))....', -19.5, 0.4877, '.........(((((((..............)))))))((((...))))....', -18.6, 0.1132], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC'], ['CGU', 'UUUUUGCGCGCGCAGCAGCGUACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', [-19.8615818, '.....(((((.((..(.((.....)).)..)))))))((((...))))....', -18.0, 0.2599, '..(((((..((((....))))...)))))..(((((....))))).......', -17.1, 0.06034], 'UUUUUGCGCGCGCAGCAGACAGCAGACGCCGCGCCCCCGCGGGGGUUUU', 'AAACGC']]

в таблицу SQL.

Я пытался сделать это так:

import sys
import sqlite3

def func_convert_list_to_dict(l):
    dic = {'RNA':[],'miRNA':[],'Insert part':[],'RNA-switch':[],'1st 2D structure':[],'MFE 1':[],'Probability 1':[],'2d 2D structure':[],'MFE 2':[],'Probability 2':[] , 'Partition Function':[]}
    for i in l:
        dic['RNA'].append(i[3])
        dic['miRNA'].append(i[4])
        dic['Insert part'].append(i[0])
        dic['RNA-switch'].append(i[1])
        dic['1st 2D structure'].append(i[2][1])
        dic['MFE 1'].append(str(i[2][2]))
        dic['Probability 1'].append(str(i[2][3]))
        dic['2d 2D structure'].append(i[2][4])
        dic['MFE 2'].append(str(i[2][5]))
        dic['Probability 2'].append(str(i[2][6]))
        dic['Partition Function'].append(str(i[2][0]))
    return dic

и часть для создания таблицы и заполнения ее данными из list_of_Switch:

conn = sqlite3.connect('DataBase.sqlite')
c = conn.cursor()
c.execute('''CREATE TABLE switches
             (rna text,mirna text,insertpart text, switch text,first2Dstr text, mfe1 real, prob1 real, second2Dstr text, mfe2 real, prob2 real, partirionfunc real)''')
dic = func_convert_list_to_dict(list_of_Switch)
m = [(dic['RNA'][i],dic['miRNA'][i],dic['Insert part'][i],dic['RNA-switch'][i],dic['1st 2D structure'][i],dic['MFE 1'][i],dic['Probability 1'][i],dic['2d 2D structure'][i],dic['MFE 2'][i],dic['Probability 2'][i],dic['Partition Function'][i]
) for i in range(len(dic['Insert part']))]
c.executemany("insert into switches values (?,?,?,?,?,?,?,?,?,?,?);", m)
conn.commit()
conn.close()

После этого я увидел это сообщение в консоли:

DataBase.sqlite is not UTF-8 encoded
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...