我正在从文件中读取二进制数据,并尝试将其存储在MySql数据库的LONGBLOB字段中。
我使用Python和PySide来实现这一点。在
我的问题是,二进制数据被解释为字符串,这意味着当数据中出现新行时,数据会被截断。在
这似乎是一个Python或PySide问题,因为如果我在MySql提示符中手动添加数据,它就可以完美地工作。
<强>编辑< /强>:我刚才用C++用QT尝试过,我也有同样的问题。在
我的表定义如下:CREATE TABLE blobtest (id INT PRIMARY KEY AUTO_INCREMENT, data LONGBLOB NOT NULL;
下面是一个复制机。在
from PySide.QtSql import QSqlDatabase, QSqlQuery, QSql
def testit():
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("localhost")
db.setDatabaseName("testdb")
db.setUserName("user")
db.setPassword("pass")
db.open()
query = QSqlQuery(db)
data = "start\n\0\n\0\n\0end"
query.prepare("INSERT INTO blobtest (data) VALUES(:data)")
query.bindValue(":data", data, QSql.In | QSql.Binary)
query.exec_()
db.close()
###############################################################################
if __name__ == "__main__":
testit()
编辑:这是相同的复制机,它的c++变体。我使用QByteArray保存数据,但它仍然被截断
^{pr2}$有人知道我可能做错了什么吗?在
当在数据中找到空字符('\0')时,数据确实被截断。在C++中,必须用这种方式创建^ {< CD1}}:
我不知道python,但我认为您还必须创建一个
QByteArray
。在相关问题 更多 >
编程相关推荐