Как решить sqlalchemy.ex c .OperationalError: (sqlite3.OperationalError) Не удалось декодировать в столбец UTF-8 - PullRequest
0 голосов
/ 22 апреля 2020

Я использую SQLAlchemy для управления базой данных Sqlite, когда я пытаюсь извлечь данные из таблицы, содержащей столбцы с символами Unicode, у меня возникает следующее исключение sqlite.

   sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) Could not decode to UTF-8 column '_svcInfo_svc_name' with text 'BAR�A TV'
    (Background on this error at: http://sqlalche.me/e/e3q8)

Я искал решение для проблема при использовании SQLalchemy, но я ничего не нашел, кажется, что это проблема, определяющая c для движка SQLite.

в соответствии с моим исследованием этой проблемы, рекомендуется определить text_factory для str или байтов , но это не решило проблему в моем случае.

Ниже моего сценария открытия базы данных, зная, что если я заменю текст в столбцах, содержащих символы Юникода, он будет работать правильно

   Base = declarative_base()

   def openDatabase(filename = 'SERVICE.db'):
        global Base
        try :
            engine = db.create_engine("sqlite:///{}".format(filename))
            engine.raw_connection().connection.text_factory =  bytes
            Base.metadata.create_all(engine)
            Session = sessionmaker()
            session = Session(bind=engine)
            return session
        except:
            return None

когда я загружаю базу данных напрямую, как это, у меня возникает то же исключение

import sqlite3
conn = sqlite3.connect('SERVICE.db')

cur = conn.cursor()
text = cur.execute("SELECT * FROM _svcInfo").fetchall()

print (text)

, но в этом случае, когда я устанавливаю tex_factory в байты, как следует из его работы, это не тот случай, когда я использую sqlalchemy

import sqlite3
conn = sqlite3.connect('SERVICE.db')

conn.text_factory  = bytes
cur = conn.cursor()
text = cur.execute("SELECT * FROM _svcInfo").fetchall()

print (text)

у кого-то есть решение этой проблемы, в противном случае мне пришлось бы обходиться без использования SQLAlchemy,

Than К

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...