gpt4 book ai didi

python - 要执行的第一个参数必须是字符串或 unicode 查询

转载 作者:行者123 更新时间:2023-12-02 11:32:02 25 4
gpt4 key购买 nike

我正在尝试使用 pyodbc 将 blob 数据上传到 ms-sql 数据库。我收到“要执行的第一个参数必须是字符串或 unicode 查询”错误。

代码是

file = pyodbc.Binary(open("some_pdf_file.pdf", "r").read())

cur.execute("INSERT INTO BlobDataForPDF(ObjectID, FileData, Extension) VALUES ('1', " + file + ", '.PDF')")
cur.commit()

第一个参数 ObjectID 以字符串形式发送。我没有发现任何问题,但我是否遗漏了什么?

最佳答案

使用参数化插入:

file = pyodbc.Binary(open("some_pdf_file.pdf", "r").read())
sql = "insert into BlobDataForPDF(ObjectID, FileData, Extension) values (?, ?, ?)"
cur.execute(sql, ('1', file, '.PDF'))
cur.commit()

当前代码正在尝试将二进制数据与插入字符串连接起来。使用参数将 SQL 字符串与插入的值隔离,防止 SQL 注入(inject),并且如果使用不同的值多次执行插入,效率会更高。使用示例here .

关于python - 要执行的第一个参数必须是字符串或 unicode 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18698664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com