小编Eli*_*ght的帖子

更改lxml中etree.tostring的默认缩进

我有一个XML文档,我正在使用它 lxml.etree.tostring

print etree.tostring(doc, pretty_print=True)
Run Code Online (Sandbox Code Playgroud)

默认的缩进级别是2个空格,我想将其更改为4个空格.在函数中没有任何争论tostring; 有没有办法用lxml轻松完成这项工作?

python lxml pretty-print

11
推荐指数
2
解决办法
5258
查看次数

事件处理程序是否可以在调用AJAX回调之前完成?

假设我有一个事件处理程序,它对服务器进行两次AJAX调用:

$("#foo").click(function(){ 
    $.get("bar", function(){ alert("Hello"); });
    $.get("baz", function(){ alert("World"); });
});
Run Code Online (Sandbox Code Playgroud)

我意识到调用回调的顺序是不确定的,因为它取决于每个请求需要多长时间等.

但这是我的问题:是否保证在调用任何一个回调函数之前我将到达事件处理程序的末尾?我已经读过一个页面的所有Javascript都在一个线程中执行,所以我认为这意味着我click可以保证在调用任何回调之前完成我的事件处理程序.

它是否正确?或者第一个请求是否可能完成并且在我们甚至到达事件处理程序结束之前执行了第一个回调?

javascript ajax asynchronous

11
推荐指数
1
解决办法
1775
查看次数

比较Java中的无穷大

以下表达式在Java中返回什么?

Math.max(Float.POSITIVE_INFINITY, Double.POSITIVE_INFINITY);
Run Code Online (Sandbox Code Playgroud)

我在网站上看到了这个问题,答案是Double.POSITIVE_INFINITY.我不确定这个答案,我们如何比较2个无穷大?有人可以澄清一下吗?谢谢.

java

10
推荐指数
1
解决办法
4997
查看次数

定点算术

有没有人知道在Python中进行定点算术的库?或者,有没有人有示例代码?

python math

10
推荐指数
2
解决办法
1万
查看次数

Django模型继承.隐藏或删除字段

我想从一些第三方代码继承一个模型类.我不会使用某些字段,但希望我的客户能够在Admin中编辑模型.最好的办法是将它们隐藏在管理员中,还是我真的可以防止它们首先被创建?

另外 - 如果需要其中一个不需要的字段,我该怎么办?我的第一个想法是覆盖save方法,只需输入默认值.

python django django-models django-admin

10
推荐指数
2
解决办法
4790
查看次数

可以使用SQLAlchemy事件来更新非规范化数据缓存吗?

出于性能原因,我有一个非规范化数据库,其中一些表包含从其他表中的许多行聚合的数据.我想通过使用SQLAlchemy事件来维护这个非规范化的数据缓存.例如,假设我正在编写论坛软件,并希望每个Thread人都有一个列跟踪线程中所有注释的组合字数,以便有效地显示该信息:

class Thread(Base):
    id = Column(UUID, primary_key=True, default=uuid.uuid4)
    title = Column(UnicodeText(), nullable=False)
    word_count = Column(Integer, nullable=False, default=0)

class Comment(Base):
    id = Column(UUID, primary_key=True, default=uuid.uuid4)
    thread_id = Column(UUID, ForeignKey('thread.id', ondelete='CASCADE'), nullable=False)
    thread = relationship('Thread', backref='comments')
    message = Column(UnicodeText(), nullable=False)

    @property
    def word_count(self):
        return len(self.message.split())
Run Code Online (Sandbox Code Playgroud)

因此,每次插入注释时(为简单起见,我们都要说注释永远不会被编辑或删除),我们希望更新word_count相关Thread对象的属性.所以我想做点什么

def after_insert(mapper, connection, target):
    thread = target.thread
    thread.word_count = sum(c.word_count for c in thread.comments)
    print "updated cached word count to", thread.word_count

event.listen(Comment, "after_insert", after_insert)
Run Code Online (Sandbox Code Playgroud)

因此,当我插入a时Comment,我可以看到事件触发并看到它已正确计算字数,但该更改未保存到Thread …

python sqlalchemy denormalization

10
推荐指数
2
解决办法
8177
查看次数

使用doctest测试警告

我想使用doctests测试某些警告的存在.例如,假设我有以下模块:

from warnings import warn

class Foo(object):
    """
    Instantiating Foo always gives a warning:

    >>> foo = Foo()
    testdocs.py:14: UserWarning: Boo!
      warn("Boo!", UserWarning)
    >>> 
    """

    def __init__(self):
        warn("Boo!", UserWarning)
Run Code Online (Sandbox Code Playgroud)

如果我跑到python -m doctest testdocs.py我班上运行doctest并确保打印警告,我得到:

testdocs.py:14: UserWarning: Boo!
  warn("Boo!", UserWarning)
**********************************************************************
File "testdocs.py", line 7, in testdocs.Foo
Failed example:
    foo = Foo()
Expected:
    testdocs.py:14: UserWarning: Boo!
      warn("Boo!", UserWarning)
Got nothing
**********************************************************************
1 items had failures:
   1 of   1 in testdocs.Foo
***Test Failed*** 1 failures.
Run Code Online (Sandbox Code Playgroud)

看起来警告正在打印但未被doctest捕获或注意到.我猜这是因为警告打印sys.stderr而不是sys.stdout …

python doctest warnings

9
推荐指数
2
解决办法
1229
查看次数

使用ssl模块进行HTTPS代理隧道连接

我想手动(使用套接字ssl模块)HTTPS通过自己使用的代理发出请求HTTPS.

我可以CONNECT很好地执行初始交换:

import ssl, socket

PROXY_ADDR = ("proxy-addr", 443)
CONNECT = "CONNECT example.com:443 HTTP/1.1\r\n\r\n"

sock = socket.create_connection(PROXY_ADDR)
sock = ssl.wrap_socket(sock)
sock.sendall(CONNECT)
s = ""
while s[-4:] != "\r\n\r\n":
    s += sock.recv(1)
print repr(s)
Run Code Online (Sandbox Code Playgroud)

上面的代码打印HTTP/1.1 200 Connection established加上一些标题,这是我所期望的.所以现在我应该准备好提出请求,例如

sock.sendall("GET / HTTP/1.1\r\n\r\n")
Run Code Online (Sandbox Code Playgroud)

但上面的代码返回

<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>400 Bad Request</title>
</head><body>
<h1>Bad Request</h1>
<p>Your browser sent a request that this server could not understand.<br />
Reason: You're …
Run Code Online (Sandbox Code Playgroud)

python ssl https proxy tunneling

9
推荐指数
3
解决办法
2万
查看次数

最好有数百列或拆分成多个表?

我正在设计一个关于机械设备运行的统计数据库.每批数据将包含数百个统计信息,因此我尝试决定是创建包含数百列的单个表还是将其拆分为多个表,每个表包含相关的统计信息.例如,我可以有一个表包含与故障相关的统计信息,另一个表包含与卡纸相关的统计信息等.

使用多个表会使整个系统变得更加复杂,但从概念上讲,我可能更容易处理几个较小的表而不是一个较大的表.

将事情分开会有任何性能上的好处吗?看起来查询带有几十列的表可能比查询具有数百列的表更快.

有没有人有这种经历的经验?我正在使用Oracle进行这个项目,虽然这是我将来可能遇到的数据库,所以任何数据库的答案都会受到赞赏.

database-design

8
推荐指数
1
解决办法
5638
查看次数

以字符数设置wxPython TextCtrl的宽度

我有一个TextCtrl在我的wxPython程序中,我想将其宽度设置为正好3个字符.但是,手动设置其大小的唯一方法是仅接受像素数.有没有办法指定字符而不是像素?

python wxpython

7
推荐指数
1
解决办法
3333
查看次数