我正在从文件中读取二进制数据并尝试将其存储在MySql数据库的LONGBLOB字段中.
我正在使用Python和PySide.
我的问题是,二进制数据被解释为字符串,这意味着当数据中出现换行符时数据被截断.
这似乎是一个Python或PySide问题,因为如果我在MySql提示中手动添加数据,它可以很好地工作.
编辑:我只是用普通的Qt用C++尝试过,我在那里遇到了同样的问题.
我的表定义如下:
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()
Run Code Online (Sandbox Code Playgroud)
编辑:这里是c ++变体中的相同复制器.我正在使用QByteArray来保存数据,但它仍然被截断
#include <QtSql/QtSql>
#include <QtCore/QByteArray>
int main(int argc, char* argv[]) {
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("testdb");
db.setUserName("user"); …
Run Code Online (Sandbox Code Playgroud) 我想使用C预处理器来计算两个代码位置之间的行数.基本想法是这样的:
#define START __LINE__
static char* string_list[] = {
"some string",
"another string",
...
"last string"
};
#define END __LINE__
#if END - START > 42
#error Too many entries
#endif
Run Code Online (Sandbox Code Playgroud)
当然这不起作用,因为在这种情况下START
,END
仅仅是对__LINE__
宏的重新定义.
我正在玩#
和##
运算符,但我无法让预处理器进行评估START
,END
而预处理器正在运行.
我的问题是:这有可能吗?
不能选择在运行时检查数组的大小.
预先感谢任何提示或想法!
我有一个相当大的项目,其安装程序是使用NSIS编写的.
我的问题是,我不能简单地将所有文件添加到安装程序文件中,因为它将超过2GB限制.
我也不能将我的大文件留在DVD上的扁平结构中,只需使用该CopyFiles
命令复制它们,因为目录结构的总大小将超过4.7GB.
所以我现在要做的是将我的大文件放在DVD上的扁平但压缩的结构中,并在安装过程中手动将它们提取到安装目录.DVD上的结构如下所示:
/ +--+ data | +-- <compressed files> +--setup.exe
有没有方便的方法呢?
非常感谢任何想法.
我想知道:
是否有可能在路由配置模式中提供默认值?
例如:我有一个视图,显示绑定到数据集的(可能很大)文件列表.我想在页面中拆分视图,每个页面显示100个文件.当省略url模式中的页面部分时,我想要显示第一页.
所以我希望有类似的东西:
config.add_route('show_files', '/show_files/{datasetid}/{page=1})
Run Code Online (Sandbox Code Playgroud)
那是合理的努力还是可行的替代方案?我没有在金字塔文档中的路由语法描述中找到任何内容.
非常感谢!