如何使用python在sqlite3数据库中修改和保存列?

时间:2018-12-14 10:23:25

标签: python sqlite

对不起,这是该问题的第二篇文章,这是我的错误,我没有在上一篇文章中阐明该问题。 我有一个CSV文件(A.csv),其中有很多列。问题是如何修改和保存此文件中的列。我想根据之前的值替换y列中的值1。

A = [ d   x    y    z
  0   1    2    5
  1   2    1    9
  2   8    1    2
  3   3    40   7
  4   6    1    7
  5   4    30   3
  6   8    40   8
  7   9    1   10
  8   6    1    4
  9  10   10    7]

预期答案应该是:

A = [ d   x    y    z
  0   1    2    5
  1   2    2    9
  2   8    2    2
  3   3    40   7
  4   6    40   7
  5   4    30   3
  6   8    40   8
  7   9    40   10
  8   6    40   4
  9  10    10   7]

代码如下:

import csv
import numpy as np
import numpy
import pandas as pd

conn = sqlite3.connect('data.db')
conn.text_factory = str 
cur = conn.cursor()
A = cur.execute("SELECT * FROM table1")


with open('output_data1001.csv', 'w') as f: 
  writer = csv.writer(f)
  writer.writerow(['d', 'x','y','z'])
  writer.writerows(A)

很抱歉打扰你了。

1 个答案:

答案 0 :(得分:0)

这是直接在SQLite中进行此更新的方法:

UPDATE yourTable t1
SET y = (SELECT t2.y
         FROM yourTable t2
         WHERE t2.d < t1.d AND t2.y <> 1
         ORDER BY t2.d DESC LIMIT 1)
WHERE y = 1;

以简单的英文,上述更新将y = 1的所有行作为目标。对于此类行,它将向后搜索具有较小值d的记录,并找到y不等于1的最新记录。然后使用该值进行更新。