运行 python 来自不同目录的文件,包括 sqlite 数据库
run python file from different directory including sqlite database
如果我首先重定向到此 main.py 文件所在的文件夹,则此代码 运行 完全没问题。所以在 cmd 中我只输入:python main.py。我的数据库 "Datalog.db" 也位于此文件夹中。
如果我从其他地方 运行 这个 python 文件,我会遇到这行代码的问题:cur.execute(sql)。所以在 cmd 中我输入:python C:\Users\ [...] \main.py。我收到以下错误:"sqlite3.OperationalError: no such table: Datalog"。稍后我想将这个 python 文件包含在 node-red 的 pythonshell 中,在那里我必须定义这个 main.py
的完整路径
我也尝试用它构建一个 exe 文件,但随后发生了同样的错误:"sqlite3.OperationalError: no such table: Datalog"。
显然与数据库的连接不是问题,首先是我的 cur.execute 命令不起作用。
我发现我必须 "include my SQLite database file in the include_files statement",但我不知道该怎么做 ..
有人可以帮忙吗?对于给您带来的不便,我深表歉意,我刚刚开始编程,这是我的第一个 post。
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 ###")
您可以将 db_name 更改为您的 sqlite 数据库的完整路径,甚至更好,动态构建数据库的路径(以下代码假定数据库与文件位于同一文件夹(目录)中调用以下代码):
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 是 sys.path 中的位置,0 表示顶部,1 表示倒数第二个,依此类推
显然你会用你的替换我的目录
如果我首先重定向到此 main.py 文件所在的文件夹,则此代码 运行 完全没问题。所以在 cmd 中我只输入:python main.py。我的数据库 "Datalog.db" 也位于此文件夹中。
如果我从其他地方 运行 这个 python 文件,我会遇到这行代码的问题:cur.execute(sql)。所以在 cmd 中我输入:python C:\Users\ [...] \main.py。我收到以下错误:"sqlite3.OperationalError: no such table: Datalog"。稍后我想将这个 python 文件包含在 node-red 的 pythonshell 中,在那里我必须定义这个 main.py
的完整路径我也尝试用它构建一个 exe 文件,但随后发生了同样的错误:"sqlite3.OperationalError: no such table: Datalog"。
显然与数据库的连接不是问题,首先是我的 cur.execute 命令不起作用。
我发现我必须 "include my SQLite database file in the include_files statement",但我不知道该怎么做 ..
有人可以帮忙吗?对于给您带来的不便,我深表歉意,我刚刚开始编程,这是我的第一个 post。
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 ###")
您可以将 db_name 更改为您的 sqlite 数据库的完整路径,甚至更好,动态构建数据库的路径(以下代码假定数据库与文件位于同一文件夹(目录)中调用以下代码):
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 是 sys.path 中的位置,0 表示顶部,1 表示倒数第二个,依此类推
显然你会用你的替换我的目录