【发布时间】:2021-09-02 19:59:00
【问题描述】:
这是一个脚本,用于通过文件哈希分析文件的信誉。文件哈希取自 Azure SQL 数据库并通过调用 API 进行分析,并将结果再次输入数据库。我正在为 SQL Server 使用 ODBC 驱动程序 17。
我在将数据重新输入数据库时遇到错误。
# Scanning files
def fileScan():
select_sql = "SELECT source_hash FROM [Downloads]"
crsr.execute(select_sql)
rows = crsr.fetchall()
# Read all rows
for row in rows:
print(''.join(row))
response = vt.get_file_report(''.join(row))
time.sleep(15)
source_hash = row
md5 = json.dumps(response['results']['md5'])
sha1 = json.dumps(response['results']['sha1'])
sha256 = json.dumps(response['results']['sha256'])
detections = json.dumps(response['results']['positives'])
query = (
"UPDATE Downloads SET md5=(?), sha1=(?), sha256=(?), detections=(?)"
"WHERE source_hash=(?)")
crsr.execute(query, (md5,sha1,sha256,detections,source_hash))
crsr.commit()
以下是错误。
461a26ad4219ea5e504fcdd1a61beb80b1a7fba8ff760e6696aa8cc3a3937887 是从数据库中检索到的哈希值进行分析。
数据库中source_hash的数据类型为VARCHAR(1024)。
pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]
Column, parameter, or variable #5: Cannot find data type 461a26ad4219ea5e504fcdd1a61beb80b1a7fba8ff760e6696aa8cc3a3937887. (2715)
(SQLExecDirectW); [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180);
[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Parameter or variable '@P5' has an invalid data type. (2724)")
尽管许多来源都发布了类似的错误,但没有提到确切的解决方案。
【问题讨论】:
-
source_hashPython 变量是行引用。你试过source_hash = row.source_hash吗?
标签: python sql-server azure-sql-database pyodbc