首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列、参数或变量#5:找不到数据类型

列、参数或变量#5:找不到数据类型
EN

Stack Overflow用户
提问于 2021-09-02 19:59:01
回答 1查看 331关注 0票数 2

这是一个脚本,用于通过文件散列分析文件的信誉。从Azure SQL数据库中获取文件哈希,并通过调用API进行分析,然后将结果再次输入到数据库中。我正在使用SQL Server的ODBC驱动程序17。

在将数据重新输入到数据库时出现错误。

代码语言:javascript
运行
复制
# 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的数据类型为VARCHAR1024。

代码语言:javascript
运行
复制
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)")

尽管在许多来源中都发布了类似的错误,但没有提到确切的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-03 09:20:11

根据所示的错误,

Parameter or variable '@P5' has an invalid data type. (2724)")

SQL查询中的source_hash (靠近WHERE子句)需要一些值(字符串或整型),但是source_hash变量没有给出确切的数据类型,并且在代码中使用了''.join(raw)source_hash = raw。这意味着,如果您的代码成功地为该部分编译,则原始变量可以是列表或元组。

例如,

代码语言:javascript
运行
复制
..... WHERE source_hash = "452dferasd5481asd5"

这是SQL query所期望的,但source_hash变量可以是列表或元组,

代码语言:javascript
运行
复制
['452dferasd5481asd5','',...] or ('452dferasd5481asd5', '',...)

因此,尝试打印source_hash变量以检查其数据类型。如果它出现在给定的示例中,您可以使用source_hash[0]来获取它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69036362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档