我试图获取从python中的sqlite3数据库返回的行数,但似乎该功能不可用:
想想php
mysqli_num_rows()
在mysql
虽然我设计了一种方法,但它很尴尬:假设一个类执行sql
并给我结果:
# Query Execution returning a result
data = sql.sqlExec("select * from user")
# run another query for number of row checking, not very good workaround
dataCopy = sql.sqlExec("select * from user")
# Try to cast dataCopy to list and get the length, I did this because i notice as soon
# as I perform any action of the data, data becomes null
# This is not too good as someone else …
Run Code Online (Sandbox Code Playgroud) 我的Web应用程序(HTML5 + JavaScript)需要显示由外部Web服务生成的PNG图像.
但是,该Web服务仅支持POST请求.(更确切地说,它确实提供了GET请求,但我必须传输大的参数,因此GET URL变得太长.)
此外,Web服务具有与Web应用程序不同的域,并且不提供正确的CORS头,因此Ajax(XMLHTTPRequest)不起作用.
我的Web应用程序是否仍然可以通过POST请求加载和显示外部图像?
我要求的解决方案不同于以下令人讨厌的变通方法,这些解决方案对我来说是众所周知的:
但是,无法使用Internet Explorer的解决方案是可以接受的.即使是Firefox或Chrome特定的解决方案也受到赞赏.
我正在使用Python requests
库发送POST请求.生成POST数据的程序部分可以写入任意类文件对象(输出流).
我怎样才能使这两个部分合适?
我原本预计会requests
为这个用例提供一个流媒体接口,但似乎没有.它只接受data
从中读取的类文件对象作为参数.它不提供我可以编写的类文件对象.
这是Python HTTP库的基本问题吗?
似乎最简单的解决方案是fork()
让请求库与POST数据生成器通信管道.
有没有更好的办法?
或者,我可以尝试使POST数据生成器复杂化.但是,那个解析一个XML流(来自stdin)并生成一个新的XML流用作POST数据.然后我反过来也有同样的问题:XML序列化程序库想要写入类似文件的对象,我不知道XML序列化程序提供类似文件的对象的任何可能性,其他人可以从中读取.
我也知道最干净,经典的解决方案是coroutines,它通过generator(yield
)在Python中有所提供.POST数据可以通过(yield
)而不是类似文件的对象流式传输,并使用拉式解析器.
但是,是否可以requests
接受POST数据的迭代器?是否有一个XML序列化器可以很容易地与yield
?结合使用?
或者,是否有任何包装器对象将写入类似文件的对象转换为生成器,和/或提供包装迭代器的类文件对象?
为什么 Python 不允许从 ZIP 文件导入 *.so 文件?
文档(https://docs.python.org/2/library/zipimport.html)非常清楚:
ZIP 存档中可能存在任何文件,但只有文件 .py 和 .py[co] 可用于导入。动态模块(.pyd、.so)的 ZIP 导入是不允许的。
但是文档没有说明这种奇怪限制的任何原因。是因为在 Python 中通常不鼓励从 ZIP 文件导入吗?还是因为安全原因?如果有,是哪些?官方有没有关于这个的说法?
一个 OCaml 模块通常至少包含一个抽象类型,其惯用名称是t
. 此外,通常有一个函数可以构造该类型的值。
这通常/惯用的名称是什么?
StdLib 在这里不一致。例如:
Array.make
一个已弃用的函数Array.create
。那么该函数应该命名为make
?Buffer.create
但没有Buffer.make
。那么该函数应该命名为create
?我的Makefile中有一条规则大致如下所示:
target_file: src_file
some_tool src_file > target_file
Run Code Online (Sandbox Code Playgroud)
(当然,在现实中我使用$@
和$<
,但对于这个问题,我更喜欢一个更明确的风格.)
问题是target_file
shell始终使用新的时间戳创建,即使some_tool
失败也是如此.在这种情况下,target_file
存在空,即使我修复了底层问题,在我手动删除target_file
或触摸之前也不会重建它src_file
.
此外,some_tool
只写入标准输出,所以我不能通过更清洁的方法来解决这个问题some_tool ... -o target_file
.
我目前的方法是删除
target_file: src_file
some_tool src_file > target_file || rm -f target_file
Run Code Online (Sandbox Code Playgroud)
但是,这有一个缺点,即Make
如果some_tool
失败则不会注意到,因为在那种情况下rm
接管并返回exitcode 0(成功).
另一种方法可能是:
target_file: src_file
some_tool src_file > target_file.tmp
mv target_file.tmp target_file
Run Code Online (Sandbox Code Playgroud)
但是这种代码很乏味,而且在失败时会留下令人讨厌的文件target_file.tmp
.
有没有更优雅的方法来解决这个问题?
在初始化脚本中,我想初始化PostgreSQL目录,但在此阶段不需要(也不想要)正在运行的PostgreSQL服务器.
如果我只是创建集群(作为用户postgres
),这将是一个明智的做法:
initdb -D ...
Run Code Online (Sandbox Code Playgroud)
但是,我还需要创建PostgreSQL角色,创建数据库并添加一些扩展(也作为用户postgres
):
createuser someuser
createdb -O someuser somedb
echo 'CREATE EXTENSION xyz;' | psql somedb
Run Code Online (Sandbox Code Playgroud)
后面的命令需要运行PostgreSQL服务器.所以整件事情变得非常混乱:
initdb -D ...
# Start PostgreSQL server in background
... &
# Wait in a loop until PostgreSQL server is up and running
while ! psql -f /dev/null template1; do
sleep 0.5
done
createuser someuser
createdb -O someuser somedb
echo 'CREATE EXTENSION xyz;' | psql somedb
# Kill PostgreSQL server
kill ...
# Wait until the …
Run Code Online (Sandbox Code Playgroud) 与 Python 的“with”语句对应的 OCaml 是什么?
with open('test.txt', 'r') as f:
# Do stuff with f
# At this point, f will always be closed, even in case of exceptions
Run Code Online (Sandbox Code Playgroud)
即:OCaml中安全确保某个资源(打开的文件、数据库连接、HTTP 连接等)在某个时间点总是被释放的首选方式是什么?等待垃圾收集器在这里是没有选择的,异常不应该阻止资源被释放。
当然,在 OCaml 中,您始终可以使用 try-finally 并“手动”关闭文件,就像在 Python 中一样。但是,这种代码容易出错。这就是 Python 引入“with”语句的原因。什么 OCaml 习惯用法可以使这种代码更易于阅读且不易出错?
请注意,这个问题与在 OCaml 中模拟 try-with-finally的问题非常不同,因为这是更进一步的一步:我不只是想在 OCaml 中模拟 try-finally!(顺便说一下[%finally ...]
,Lwt做得很好。)我想更进一步,首先不需要编写那些 finally 子句——就像在 Python 中可以做到的那样。
还要注意,这个问题不是关于实现细节,而是关于习惯用法:所有可能的设计和解决方案中哪些在 OCaml 社区中获得了一些牵引力并被普遍接受?
我试图创建一个排列,当我完成我的问题时,我收到这个奇怪的错误:
Stack around the variable "temp" was corrupted
Run Code Online (Sandbox Code Playgroud)
变量的片段在嵌套的for循环中:
for(int i = 0 ; i < str_length ; i++)
{
for(int j = 0 ; j < str_length ; j++)
{
char temp[1];
temp[1] = text[i];
text[i] = text[j];
text[j] = temp[1];
cout << text << endl;
}
}
Run Code Online (Sandbox Code Playgroud)
text作为字符串在for循环之外初始化,当我将temp [1]变为char或int时,我得到相同的错误.该程序工作正常,但我担心为什么我收到此错误,有谁知道为什么?