在RDBMS中存储邮政地址的最佳实践是否有任何好的参考?似乎有很多可以做出的权衡,并且每个都有很多优点和缺点需要评估 - 当然这已经一次又一次地完成了吗?也许有人至少写过一些在某处学到的经验教训?
我所讨论的权衡的例子是将邮政编码存储为整数与char字段,如果房屋号码存储为单独的字段或地址行1的一部分,如果套房/公寓/等号码被标准化或仅存储为地址行2中的文本块,如何处理zip +4(单独的字段或一个大字段,整数与文本)?等等
我现在主要关注的是美国地址,但我想有一些最好的做法可以帮助你做好全球化的可能性(例如,将地域命名为区域而不是州或邮政编码,而不是邮政编码,等等
看看urllib2的来源,看起来最简单的方法就是将HTTPRedirectHandler子类化,然后使用build_opener来覆盖默认的HTTPRedirectHandler,但这似乎是很多(相对复杂的)工作,看似应该是很简单.
文档说调用sys.exit()会引发一个SystemExit异常,该异常可以在外层捕获.我有一种情况,我想明确地,毫无疑问地退出测试用例,但是unittest模块捕获SystemExit并阻止退出.这通常很好,但我试图处理的具体情况是我们的测试框架检测到它被配置为指向非测试数据库的情况.在这种情况下,我想退出并阻止运行任何进一步的测试.当然,由于unittest陷入了SystemExit的困境并继续开心,它正在挫败我.
到目前为止我唯一想到的选择是使用ctypes或者类似的东西来直接调用exit(3),但这对于一些非常简单的东西来说似乎是一个相当糟糕的黑客.
我已经开发了一些类似于DAO的自定义类来满足我的项目的一些非常专业的需求,这是一个服务器端进程,它不在任何类型的框架内运行.
解决方案很有效,除了每次发出新请求时,我都会通过MySQLdb.connect打开一个新连接.
什么是最好的"drop in"解决方案,将其转换为在python中使用连接池?我正在想象类似于Java的公共DBCP解决方案.
这个过程是长时间运行的,并且有很多线程需要发出请求,但不是所有的同时...特别是他们在写出一大块结果的短暂爆发之前做了很多工作.
编辑添加:经过一些搜索,我发现anitpool.py看起来不错,但由于我对python相对较新,我想我只是想确保我没有错过更明显/更惯用/更好的解决方案.
例如,如果我有一个unicode字符串,我可以将其编码为ASCII字符串,如下所示:
>>> u'\u003cfoo/\u003e'.encode('ascii')
'<foo/>'
Run Code Online (Sandbox Code Playgroud)
但是,我有这个ASCII字符串:
'\u003foo\u003e'
Run Code Online (Sandbox Code Playgroud)
...我想变成与上面第一个例子中相同的ASCII字符串:
'<foo/>'
Run Code Online (Sandbox Code Playgroud) 例如,我发出了一个ALTER TABLE语句,用于在InnoDB表中的MEDIUMTEXT字段上创建索引,该表具有134k行,其中索引的大小为255字节,字段中数据的平均大小为30k.此命令已运行最后15分钟左右(并且是数据库上唯一运行的命令).我有什么方法可以确定它是否会在接近5分钟,5小时或5天内完成?
我正在测试以下测试文档:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>hi there</title>
</head>
<body>
<img class="foo" src="bar.png"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如果我使用lxml.html解析文档,我可以使用xpath获取IMG:
>>> root = lxml.html.fromstring(doc)
>>> root.xpath("//img")
[<Element img at 1879e30>]
Run Code Online (Sandbox Code Playgroud)
但是,如果我将文档解析为XML并尝试获取IMG标记,则会得到一个空结果:
>>> tree = etree.parse(StringIO(doc))
>>> tree.getroot().xpath("//img")
[]
Run Code Online (Sandbox Code Playgroud)
我可以直接导航到元素:
>>> tree.getroot().getchildren()[1].getchildren()[0]
<Element {http://www.w3.org/1999/xhtml}img at f56810>
Run Code Online (Sandbox Code Playgroud)
但是,这当然不能帮助我处理任意文件.我也希望能够查询etree来获得一个直接识别这个元素的xpath表达式,从技术上讲,我可以这样做:
>>> tree.getpath(tree.getroot().getchildren()[1].getchildren()[0])
'/*/*[2]/*'
>>> tree.getroot().xpath('/*/*[2]/*')
[<Element {http://www.w3.org/1999/xhtml}img at fa1750>]
Run Code Online (Sandbox Code Playgroud)
但是,该xpath显然对解析任意文档没有用.
显然我在这里遗漏了一些关键问题,但我不知道它是什么.我最好的猜测是它与命名空间有关,但是唯一定义的命名空间是默认的,我不知道在命名空间方面我还需要考虑什么.
那么,我错过了什么?
我编写的代码可以根据页面中的IMG标签自动创建CSS sprite,并用DIV替换它们(我认为是)适当的CSS来将精灵图像定位为背景,让相应的部分显示出来 - 问题是我不能让DIV表现为IMG替代品的下降.
如果我将默认的'display'值设置为'block',那么如果原始IMG位于某些文本的末尾,则替换DIV将跳到文本后面的下一行(这当然是我期望的东西) with display:block to do).
如果我将'display'更改为inline,那么DIV与文本保持在同一行,但它忽略了我设置和折叠的'width'和'height'.我已经尝试将其放入DIV内部,但它只占用了足够的宽度来容纳NST.
我已经尝试过将显示设置为所有可能的值(包括"表格行","磨合","紧凑"等"模糊"),但都没有运气.甚至可以创建一个与IMG具有相同布局行为的DIV吗?
我愿意拥有比单个DIV更复杂的东西,但是我已经尝试了那里显而易见的事情(一个DIV在另一个内部DIV设置显示的内部:阻止外部设置显示:内联)但我避风港找不到那种有效的组合.
在替换的IMG/DIV之外我总能做一些特定的事情来获得我想要的布局,但我的目标是拥有一个通用的自动CSS-sprite机制,无论HTML的其余部分如何都能工作.
我希望能够从调试器中删除python REPL - 如果这是不可能的,除了手动将它们全部作为监视表达式添加之外,是否有更简单的方法来评估当前断点的上下文中的python表达式?
pdb和winpdb似乎都缺少这个必要的(对我来说)功能.我看到WingIDE有这样的东西,但我更喜欢免费的解决方案,如果我必须支付,我宁愿支付比Wing更好的东西.