如何比较用两个值隔开的sqlite列中的值?

时间:2019-05-05 12:19:21

标签: python arrays sqlite

问候,

我有一个包含三列的sqlite表,如下所示

time                preValue        nextValue
4.22,4.22,9.22      Null               4.23
4.23,4.23,9.23      4.22               9.22

我想创建第四列,其中包含每一行的preValue和nextValue范围内的时间计数。

表示每次取一个时间值,例如, 第1行:如果4.22在0到4.23之间,则是,则增加计数器。

如何使用sqlite查询或python做到这一点。

预先感谢

1 个答案:

答案 0 :(得分:0)

如上所述,您应该规范化数据库。但是话虽如此,我想提高自己的python技能

(无耻地!)找到一些代码(在这里:http://www.sqlitetutorial.net/sqlite-python/sqlite-python-select/)之后,我创建了这个代码:

import sqlite3
from sqlite3 import Error

def create_connection(db_file):
    """ create a database connection to the SQLite database
        specified by the db_file
    :param db_file: database file
    :return: Connection object or None
    """
    try:
        conn = sqlite3.connect(db_file)
        return conn
    except Error as e:
        print(e)

    return None


def main():
   database = "D:\\temp\\alia.sqlite"
   conn = create_connection(database)
   cur = conn.cursor()
   cur.execute("SELECT * FROM alia")
   rows = cur.fetchall()
   for row in rows:
        print(row)
        if row[1]!=None:
           low=float(row[1])
        else:
           low=-999
        high=float(row[2])
        r = row[0].split(',')
        for i in r:
            if float(i)>low and float(i)<=high:
                print(i)

if __name__ == '__main__':
    main()

数据库是这样创建的:

D:\TEMP>sqlite3 alia.sqlite
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> create table alia(time text, prevalue text, nexvalue text);
sqlite> insert into alia values('4.22,4.22,9.22',Null,'4.23');
sqlite> insert into alia values('4.23,4.23,9.23','4.22','9.22');
sqlite> select * from alia;
4.22,4.22,9.22||4.23
4.23,4.23,9.23|4.22|9.22
sqlite> .q

此脚本的输出为:

D:\TEMP>python test.py
('4.22,4.22,9.22', None, '4.23')
4.22
4.22
('4.23,4.23,9.23', '4.22', '9.22')
4.23
4.23

我希望您有足够的勇气来适应自己的需求?

我用了30分钟完成了操作,对python编程来说我是新手。...;)