问候,
我有一个包含三列的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做到这一点。
预先感谢
答案 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编程来说我是新手。...;)