数据库连接超时原因:无法打开数据库文件原因:文件不是数据库 在数据库浏览器和 python中

关于数据库连接超时原因的问题,在open to reason中经常遇到, 我试图做行人检测,我需要训练我的 SVM,我正在加载 Diamler 数据集(link),而在 python 中加载它显示与 DB 浏览器相同的错误是“无法打开数据库文件原因:文件不是数据库”。虽然文件很容易在 Internet Explorer 中打开。数据库下载链接-link

我试图做行人检测,我需要训练我的 SVM,我正在加载 Diamler 数据集(link),而在 python 中加载它显示与 DB 浏览器相同的错误是“无法打开数据库文件原因:文件不是数据库”。虽然文件很容易在 Internet Explorer 中打开。数据库下载链接-link

我的 python 代码是:

import sqlite3
con = sqlite3.connect('GroundTruth2D.db')
cur = con.cursor()
cur.execute("SELECT * FROM sqlite_master")
records = cur.fetchall()
print("Total rows in table - ",cur.rowcount)
print(records)

虽然我使用的数据库浏览器是here

0

您提供的链接具有.tar.gz 扩展名,但下载时实际上不是.tar.gz 文件,而只是一个基本的.tar。将文件重命名为.tar 以便能够按预期访问它。

.tar 似乎包含 Matlab 脚本和由它们访问的数据库,但它们似乎不是 sqlite3 数据库,因此您不能使用sqlite3打开它们。

您需要找到一个能够读取此数据库格式的 Python 包,或者使用 Matlab 转换数据并将其存储为 SQLite 数据库以按照您计划的方式访问它。

0

所以他们把文件扩展名保存为.db,但它实际上是一个.txt 文件类型,我们必须读取每一行并使用解析器提取数据。

用于解析数据的 python 代码:

import readSequence
seq_separator =":"
img_separator = ";"
obj_2d_separator = "#"
seqcount = -1
imgcount = -1
objcount = 0
seqs = []
f = open("GroundTruth2D.db", "r")
line = f.readline()
line = line.strip()
while line:
    if line==":":
        seq_id = f.readline().strip()
        path_to_data = f.readline().strip()
        numimages = f.readline().strip()
        seq = readSequence.readSequences(seq_id, path_to_data, numimages)
        seqs.append(seq)
        seqcount+=1
    elif line==";":
        imgcount+=1
        nameimg = f.readline().strip()
        [width,height] = f.readline().strip().split(" ")
        numobj = f.readline().strip().split(" ")[1]
        seqs[seqcount].addimage(nameimg, width, height, numobj)
    elif line[0] =="#":
        objclass = line[2:].strip()
        objid = f.readline().strip()
        conf = f.readline().strip()
        [min_x,min_y,max_x,max_y] = f.readline().strip().split(" ")
        seqs[seqcount].addobj(objclass, objid, conf, [min_x,min_y, max_x,max_y])
    line = f.readline()
    line=line.strip()

readSequence.py-& gt;

class read2Dobj:
    def __init__(self, objclass = None, objid=None, conf=None, coord=None):
        self.objclass = objclass
        self.objid = objid
        self.conf = conf
        self.coord = coord
    def setobjclass(self, objclass):
        self.objclass = objclass
    def setobjid(self, objid):
        self.objid = objid
    def setconf(self,conf):
        self.conf = conf
    def setcoord(self, coord):
        self.coord = coord
class readImage:
    count = 0
    def __init__(self,name=None, width=None, height=None, numobj=None):
        self.name = name
        self.width = width
        self.height = height
        self.numobj = numobj
    def setname(self,name):
        self.name = name
    def setwidth(self,width):
        self.width = width
    def setheight(self,height):
        self.height = height
    def setnumobj(self,numobj):
        self.numobj = numobj
        self.objs = [read2Dobj() for i in numobj]
    def addobjs(self, objclass=None, objid=None, conf=None, coord=None):
        self.objs[self.count].setobjclass(objclass)
        self.objs[self.count].setobjid(objid)
        self.objs[self.count].setconf(conf)
        self.objs[self.count].setcoord(coord)
        self.count+=1
class readSequences:
    count = 0
    def __init__(self, seq_id, path_to_data, numimages):
        self.seq_id = seq_id
        self.path_to_data = path_to_data
        self.numimages = numimages
        self.imgs = [readImage() for i in range(int(self.numimages))]
    def addimage(self, name, width, height, numobj):
        self.imgs[self.count].setname(name)
        self.imgs[self.count].setwidth(width)
        self.imgs[self.count].setheight(height)
        self.imgs[self.count].setnumobj(numobj)
        self.count+=1
    def addobj(self, objclass=None, objid=None, conf=None, coord=None):
        self.imgs[self.count-1].addobjs(objclass, objid,conf,coord)

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(220)
Cnas认证咨询服务机构:试图从咨询取消注册服务不工作
上一篇
Python中指数怎么表示:Python中指数函数的集成
下一篇

相关推荐

  • python浅拷贝和深拷贝区别、原理与实现

    示例示例Python中的浅拷贝和深拷贝是指在复制对象时,复制的结果和原来的对象之间的关系。浅拷贝:浅拷贝只复制一层,也就是说,它只复制最外围的对象,而不复制它包含的对象。如果最外围的对象中包含其他对象,那么这些对象将不会被复制,而是使用原来的对象。…

    2023-05-30 14:25:17
    0 86 43
  • python程序员待遇:Python程序员薪酬最高,收入惊人!

    Python程序员的待遇取决于他们的技能水平和工作经验。一般来说,Python程序员的薪资水平较高,尤其是对于那些有丰富工作经验的Python程序员而言,他们的薪资水平更高。此外,Python程序员还可以获得许多其他福利,包括住房补贴、交通补贴、带薪休假等。…

    2023-06-22 01:21:15
    0 64 23
  • python文本情感分析(含代码示例)

    Python文本情感分析是一种使用自然语言处理技术来分析文本中的情感倾向的过程。它可以帮助我们了解用户对特定主题的看法,从而改善产品和服务。…

    2023-04-23 00:28:07
    0 38 36
  • python字符串拼接数字从零开始

    实例实例Python字符串拼接数字,可以使用format()函数或者%运算符来实现。代码实例:…

    2023-08-20 08:25:28
    0 41 24
  • python中import re:如何使用Python中的re模块进行正则表达式匹配

    import re 是Python中正则表达式模块,可以用来处理字符串。它提供了一系列的函数,可以用来查找、替换和分割字符串,以及检查字符串是否符合特定的格式。…

    2023-05-02 10:25:33
    0 69 39
  • python是面向Python的优势

    Python是一种面向对象的编程语言,它提供了一种简单而强大的方法来创建可重用的代码。它使用类和对象来实现面向对象编程,允许程序员将代码封装在类中,以便在不同的程序中重复使用。…

    2023-05-02 04:34:35
    0 35 75
  • python程序包:如何使用Python程序包构建高效的应用程序

    Python程序包是一种用于组织Python模块的形式,它允许程序员将相关的模块组合在一起,以便更轻松地管理和使用它们。Python程序包可以包含函数、类、变量和其他Python代码,以帮助简化程序的开发。…

    2024-03-20 06:08:18
    0 35 69
  • python中的%d:%d个原因你应该学习Python

    示例示例%d 是Python中格式化字符串的占位符,表示用整数来填充。示例:…

    2023-04-25 12:42:58
    0 68 40

发表评论

登录 后才能评论

评论列表(7条)