我正在尝试在python中使用sqlite3数据库,但出现以下错误:
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
但是它不起作用会不断标记错误
First.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
没问题,但是如果我从另一侧执行它会抛出错误。
我意识到由于某种原因在目录C: \ Users \ Angel \ Desktop \ Project \ Src_School_Admin
中创建了另一个数据库,该目录是发送来调用FirstUseInfo
函数的文件所在的位置
答案 0 :(得分:0)
但是如果我从另一侧执行它,则会抛出错误。
所以您的代码
r = str(os.getcwd())
final = r.replace("\\","/")
result = None
d=final+"/InfoDB.db"
每次从其他地方运行程序时,都会提供新的文件名。
当你跑步
conexion = sqlite3.connect(d)
SQLite没有看到数据库,而是在那里创建。
您应该对数据库文件的真实文件名进行一些修改。
答案 1 :(得分:0)
通过附加以下代码行来解决
r = os.path.dirname (__ file __)
source = r.replace ('\\'," / ") +" / InfoDB.db "
据我了解,这一行返回文件位置的绝对值