sqlite3.OperationalError: нет такой таблицы: MainData - PullRequest
0 голосов
/ 02 марта 2019

Я пытаюсь использовать базу данных sqlite3 в python, но получаю следующую ошибку:

Traceback (most recent call last):
  File "C:\Users\Angel\Desktop\Proyecto\Src_School_Admin\SchoolAdmin-Director.py", line 4, in <module>
    from execute_files.Sqlitedb import FirstUseInfo
  File "C:\Users\Angel\Desktop\Proyecto\Src_School_Admin\execute_files\Sqlitedb.py", line 17, in <module>
    FirstUseInfo()
  File "C:\Users\Angel\Desktop\Proyecto\Src_School_Admin\execute_files\Sqlitedb.py", line 12, in FirstUseInfo
    s = cursor.execute("SELECT Use FROM MainData")
sqlite3.OperationalError: no such table: MainData
[Finished in 0.2s]

Функция FirstUseInfo находится в файле по следующему пути: C:\Users\Angel\Desktop\Project\Src_School_Admin\execute_files вместе сбаза данных

, а файл, который отправляется для вызова функции FirstUseInfo, находится в C:\Users\Angel\Desktop\Project\Src_School_Admin

, но он не работает, продолжает помечать ошибку

Сначала.py

from PyQt5.QtWidgets import QMainWindow,QApplication
from PyQt5 import uic
from PyQt5 import QtCore
from execute_files.Sqlitedb import FirstUseInfo

class InitWindow(QMainWindow):
    def __init__(self):
        QMainWindow.__init__(self)
        #uic.loadUi("UIX/first.ui",self)

        #self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
        #self.LStatus.setText("Cargando...")

        self.FirstUse()
        FirstUseInfo()

    def FirstUse(self):
        pass


app = QApplication([])
iw = InitWindow()
iw.show()
app.exec_()

Sqlitedb.py

import sqlite3
from PyQt5.QtWidgets import QMessageBox
import os

def FirstUseInfo():
    r = str(os.getcwd())
    final = r.replace("\\","/")
    result = None
    d=final+"/InfoDB.db"

    conexion = sqlite3.connect(d)
    cursor = conexion.cursor()
    s = cursor.execute("SELECT Use FROM MainData")
    for i in s:
        result = int(i[0])
    return print(result)
    conexion.close()
FirstUseInfo()

, если я запускаю FirstUseInfo () из Sqlitedb.py, проблем нет, но если я выполню егос другой стороны выдает ошибку.

enter image description here

Я понял, что по какой-то причине в каталоге C: \ Users \ Angel \ Desktop \ Project \ Src_School_Admin создается другая база данных, гдефайл, который отправляет для вызова функции FirstUseInfo, находится

Ответы [ 2 ]

0 голосов
/ 02 марта 2019

решить эту проблему, добавив эту строку кода

r = os.path.dirname (__ file __)

source = r.replace ('\\'," / ") +" / InfoDB.db ", как я понимаю, эта строка возвращает абсолютное значение местоположения файла

0 голосов
/ 02 марта 2019

, но если я выполню его с другой стороны, он выдаст ошибку.

Таким образом, ваш код

r = str(os.getcwd())
final = r.replace("\\","/")
result = None
d=final+"/InfoDB.db"

дает новое имя файла каждый раз, когда вы запускаете программу изгде-нибудь еще.Когда вы запускаете conexion = sqlite3.connect(d) SQLite не видит базу данных и создает ее там.

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

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