如何在不同根目录中的表上执行insert命令?

时间:2016-03-23 15:17:40

标签: python sqlite

我正在提取从一堆图像中检测到的blob图像芯片,并将这些数据存储到sqlite3数据库供以后使用。

我成功地能够过滤图像,找到blob,提取blob的图像芯片,并将文件名,blob中心坐标和blob芯片数据存储到与我的代码位于同一目录中的数据库中。

con = sqlite3.connect('./data/sources.db', detect_types = sqlite3.PARSE_DECLTYPES, timeout = 10)
cur.execute('''INSERT INTO ./data/sources (filename, ...

现在我想在几百个图像上实现这一点,并为每个图像提取数据创建一个不同的表。我想将这些表存储在与其他代码分开的文件夹中,因此我将代码更改为:

OperationalError: near ".": syntax error

但是这返回了错误./data/。但是如果我删除了execute命令中的OperationalError: no such table: sources部分,则会收到错误sources。如何在/data/命令的INSERT文件夹中定义{{1}}表?

文档here没有显示在不同目录中的表上执行命令的示例,我还没有看到任何其他示例。

1 个答案:

答案 0 :(得分:0)

您希望sqlite用当前文件夹路径替换.。但它没有提供此功能。您可以改为提供完整路径

import os
SCRIPT_DIR = os.path.dirname(os.path.realpath(__file__))
DB_PATH = SCRIPT_DIR +  '/data/sources.db'
...
con = sqlite3.connect(DB_PATH, detect_types = sqlite3.PARSE_DECLTYPES, timeout = 10)

如果文件/表之前不存在,您应该简单地执行一种数据库初始化来创建表。但这只不过是CREATE TABLE陈述

CREATE TABLE sources (...) VALUES ();