从不同的目录运行python文件,包括sqlite数据库

2024-04-23 19:47:14 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我首先重定向到main.py文件所在的文件夹,那么这段代码运行得非常好。所以在cmd中我只键入:python main.py。在这个文件夹中还有我的数据库“Datalog.db”

如果我从其他地方运行这个python文件,这行代码就会出现问题:cur.execute(sql)。所以在cmdi中键入:python C:\Users\[…]\main.py。我得到以下错误:“sqlite3.OperationalError:没有这样的表:Datalog”。稍后我想将这个python文件包含在pythonshell中的节点red中,在那里我必须定义这个main.py的完整路径

我还试图用它构建一个exe文件,但是出现了相同的错误:“sqlite3.OperationalError:no such table:Datalog”

显然连接到数据库不是问题,首先我的cur.execute命令不起作用

我发现我必须“在include\u files语句中包含我的SQLite数据库文件”,但我不知道该怎么做

有人能帮忙吗?很抱歉给您带来不便,我刚开始编程,这是我的第一篇帖子

import sqlite3 as db

db_name = 'Datalog'
output_number = 'Output1'
output = 'hello'
timestamp = '2019-11-11 09:27:02'
db_name = f'{db_name}.db'

con = db.connect(db_name)
with con:
    cur = con.cursor()

sql = f"UPDATE Datalog SET {output_number}='{output}' WHERE timestamp ='{timestamp}'"

cur.execute(sql)
con.commit()
print("### DB updated ###")

Tags: 文件namepy文件夹数据库outputexecutedb
2条回答

您可以将db\u name更改为sqlite数据库的完整路径,或者更好地动态构建db的路径(下面的代码假设db与调用下面代码的文件位于同一文件夹(目录)中):

import os.path

db_name = os.path.dirname(os.path.abspath(__filename__)) + 'Datalog'

python在“sys.path”中查找文件,因此您希望在该路径中插入包含您的文件的目录名,以便python可以找到它
举个例子:

import sys
sys.path.insert(0, r'C:\Users\Philip\Work\Bin')

其中0是系统路径中的位置,0表示顶部,1表示距离顶部的第二个位置等
显然你会把我的目录换成你的

相关问题 更多 >