【问题标题】:Python SQLITE3 UPDATE gives 'None' as the outputPython SQLITE3 UPDATE 给出“无”作为输出
【发布时间】:2017-12-01 03:46:19
【问题描述】:

如果之前已经回答了类似的问题,我深表歉意,但我是 SQLITE3 的初学者(一天大),我似乎真的无法理解我在这里做错了什么。

我的表(3列即{A1,A2,W}):

A1 A2 W
12 67 0
15 01 0

Code:

import sqlite3
import pandas as pd
df = pd.read_csv('/Users/advaitbalaji/Desktop/p.txt', sep = '\t', header = 0)
df.head()
connex = sqlite3.connect('database.db')
cur = connex.cursor()
df.to_sql(name = 'database', con = connex, if_exists = 'replace', index = False)
cur.execute("SELECT Weights FROM database WHERE A1 = 12 AND A2 = 67")
k = cur.fetchone()
print(k)
cur.execute("UPDATE database SET W = W + 1 WHERE A1 = 12 AND 2 = 67")
k = cur.fetchone()
print(k)
connex.commit()


Output:  
 (0,)  
 None

我什至对代码进行了以下更改,但输出保持不变:

cur.execute("SELECT Weights FROM database WHERE A1 = 12 AND A2 = 67")
k = cur.fetchone()
print(k)
cur.execute("UPDATE database SET W = ? WHERE A1 = 12 AND A2 = 67",(k[0]+1,))
k = cur.fetchone()
print(k)
connex.commit()

Output:
 (0,)
 None

我似乎无法弄清楚为什么我的输出不如下:

Desired Output:
(0,)
(1,)

【问题讨论】:

  • 在某些情况下您将其称为 W,在其他情况下您将其称为权重,这可能是个问题吗?
  • @Zooby 啊! “权重”是一个错字。即使使用 W,问题仍然存在。

标签: python database python-3.x sqlite


【解决方案1】:

您将游标设置为执行更新,要返回结果元组,您需要让游标再次执行选择查询。如果您在开始时为相同的 select 子句复制相同的条件,它应该会返回预期的结果。

cur.execute("SELECT W FROM database WHERE A1 = 12 AND A2 = 67")
k = cur.fetchone()
print(k)
cur.execute("UPDATE database SET W = ? WHERE A1 = 12 AND A2 = 67",(k[0]+1,))
cur.execute("SELECT W FROM database WHERE A1 = 12 AND A2 = 67")
k = cur.fetchone()
print(k)

【讨论】:

  • 非常感谢!看起来我的概念还不是很清楚:P
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多