Невозможно получить результат для нескольких баз данных (SQL -Tools) - PullRequest
1 голос
/ 19 февраля 2020

Я должен получить смешанный результат из баз данных, но этот код вызывает ошибку:

from sql_tools import sqlite

sqlite.connect(["main.db", "base.sqlite3"])
data = sqlite.execute(["SELECT * FROM PREFERENCES", "SELECT * FROM USERS"]).get
sqlite.disconnect()

Ошибка:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\Hunny\AppData\Local\Programs\Python\Python38\lib\site-packages\sql_tools\sqlite\execute.py", line 28, in execute
    obj.execute()
  File "C:\Users\Hunny\AppData\Local\Programs\Python\Python38\lib\site-packages\sql_tools\internals.py", line 188, in execute
    self.__command = self.__parseCommands()
  File "C:\Users\Hunny\AppData\Local\Programs\Python\Python38\lib\site-packages\sql_tools\internals.py", line 270, in __parseCommands
    raise e
  File "C:\Users\Hunny\AppData\Local\Programs\Python\Python38\lib\site-packages\sql_tools\internals.py", line 260, in __parseCommands
    raise exception.UnknownError(
sql_tools.exception.UnknownError: Database and commands are not commuting, n(commands) != n(database)

Может кто-нибудь сказать мне, как решить это?

1 Ответ

0 голосов
/ 19 февраля 2020

Это потому, что когда вы подключаете несколько баз данных, функция execute ожидает, что вы передадите команды в виде списков списков, где каждый элемент списка - это список команд, которые будут выполняться в каждой базе данных. Вы можете прочитать больше в документации .

Исправленный код:

from sql_tools import sqlite

sqlite.connect(["main.db", "base.sqlite3"])
data = sqlite.execute([["SELECT * FROM PREFERENCES"], ["SELECT * FROM USERS"]]).get
sqlite.disconnect()
...