从SQLite恢复数据时,我的数据发生了什么变化?

2024-09-27 04:27:54 发布

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

不幸的是,我在SQLite中将一些速度数据保存为文本。我希望为每个用户ID选择最大速度,这对我来说很难。当我试图在检索完列表后在列表上输出max(speed)时,我得到了一个数据库中不存在的值

下面是我检索数据的方法:

def getMaxSpeed(databasepath, id):
    con = lite.connect(databasepath)
    speeds = []
    with con:
        cur = con.execute("SELECT speed FROM table where userid = {userid}".format(userid=id))
    speed = [x[0] for x in cur]
    for i in range(0,len(speed)):
        speeds.append(float(speed[i]))
    return speeds

for循环之前的样本(裁剪)输出:

[u'0.00', u'0.20', u'0.20', u'0.20', u'0.10', u'0.20', u'0.10', u'0.10', u'0.20', u'13.60', u'12.30', u'12.20', u'12.30', u'12.20', u'13.00', u'13.00', u'13.00', u'13.00', u'13.60', u'13.60', u'13.70', u'14.00', u'13.10', u'6.90', u'7.50', u'7.60', u'7.70', u'6.00', u'5.90', u'8.10', u'8.10', u'8.10', u'8.30', u'8.20', u'4.60', u'1.70', u'1.70', u'3.10', u'3.90', u'3.60', u'3.50', u'3.50', u'3.30', u'3.30', u'3.30', u'2.00', u'2.00', u'2.10', u'2.10', u'3.70', u'3.60', u'3.50', u'3.50', u'3.30', u'6.00', u'4.20', u'4.20', u'4.30', u'4.20', u'4.30', u'4.30', u'4.20', u'4.20', u'4.70', u'4.80', u'5.00', u'6.40', u'6.40', u'5.10', u'5.10', u'2.20', u'2.20', u'2.20', u'2.20', u'0.00', u'0.10', u'0.10', u'0.30', u'0.10', u'0.10', u'0.10', u'0.20', u'0.00', u'13.20', u'10.50', u'10.50']

for循环后的样本(裁剪)输出:

[0.0, 0.2, 0.2, 0.2, 0.1, 0.2, 0.1, 0.1, 0.2, 13.6, 12.3, 12.2, 12.3, 12.2, 13.0, 13.0, 13.0, 13.0, 13.6, 13.6, 13.7, 14.0, 13.1, 6.9, 7.5, 7.6, 7.7, 6.0, 5.9, 8.1, 8.1, 8.1, 8.3, 8.2, 4.6, 1.7, 1.7, 3.1, 3.9, 3.6, 3.5, 3.5, 3.3, 3.3, 3.3, 2.0, 2.0, 2.1, 2.1, 3.7, 3.6, 3.5, 3.5, 3.3, 6.0, 4.2, 4.2, 4.3, 4.2, 4.3, 4.3, 4.2, 4.2, 4.7, 4.8, 5.0, 6.4, 6.4, 5.1, 5.1, 2.2, 2.2, 2.2, 2.2, 0.0, 0.1, 0.1, 0.3, 0.1, 0.1, 0.1, 0.2, 0.0, 13.2, 10.5, 10.5]

主要方法:

speed = []
for id in userid:
    speed = getMaxSpeed(dbpath, id)
    for x in speed:
        if x > 40:
           print x
           print id
           break

最后一个for循环只是检查错误数据。它输出许多不同的ID,其中每个速度等于102.3。我希望我的速度在0到30之间

样本输出:

102.3
209407000

因此,要检查这一点,请返回我的数据库并执行以下操作:

SELECT distinct speed from table WHERE userid = 209407000

它输出很多速度,http://pastebin.com/bEe5tPkZ,没有人接近102.3。所以,我的检索方法中发生了一些事情——但是什么呢?我有那么一天,一切都出了问题


Tags: 数据方法inid数据库列表forcon

热门问题