Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python脚本if参数从未遇到_Python - Fatal编程技术网

python脚本if参数从未遇到

python脚本if参数从未遇到,python,Python,我有下面的python脚本,它每次运行时都在更新数据库,即使256sha是相同的 import os import hashlib import pynuodb connection = pynuodb.connect("CORE", "priappvmndb01", "ndbadmin", "B1xwmi28", options={'schema': 'markit'}) cursor = connection.cursor() filename = 'BOND_COMPOSITES_201

我有下面的python脚本,它每次运行时都在更新数据库,即使256sha是相同的

import os
import hashlib
import pynuodb

connection = pynuodb.connect("CORE", "priappvmndb01", "ndbadmin", "B1xwmi28", options={'schema': 'markit'})
cursor = connection.cursor()
filename = 'BOND_COMPOSITES_20140624.7z'
thedata = pynuodb.Binary(open(filename, 'rb').read())
with open(filename,"rb") as f:
    for line in f.readlines():
        line = line.rstrip("\n")

        m = hashlib.sha256(line)
        sha256 = (m.hexdigest())
sqlget = "select md5hash from raw_data where filename = ?"
sqlins = "insert into raw_data (genericfilename, fileid, fileformat, loaddate, revisionnumber, rawdata, md5hash, filename) values ('bond_composites.csv', 1, 'csv', 'now', 1, ?, ?, ?)"
cursor.execute(sqlget, (filename,))
result = cursor.fetchone()
if sha256 == result:
    print "Nothing to be done."
else:
    cursor.execute(sqlins, (thedata, sha256, filename))
    connection.commit()
    print "Database Updated!"

从中我发现问题在于if,这意味着它可能无法识别其中一个变量?

python DB-API返回行的元组,即使它只包含一个值

'foo' != ('foo',)
所以你可能想做的是:

if sha256 == result[0]:

如果将打印类型(sha256)和打印结果(result)放在if上方,您会看到什么?啊哈。结果似乎是非同寻常的。sha256显示为str.correction,这是因为我截断了DB。结果显示为一个元组。我试图回答这个问题,但a)有人打败了我,b)我犯了和你一样的错误。虽然我应该更清楚,但我认为将m.hexdigest()包装在()中会使其成为一个元组,看起来您也在考虑同样的事情,并有意这么做。虽然我更喜欢下面Tyler的答案,但您可以使用sha256=m.hexdigest()(带尾随,)将其生成一个元组。@B谢谢您的帮助,很高兴知道。很好,这就完成了!谢谢