我最近一直在玩PostgreSQL,并且无法理解如何备份和恢复单个表.
我使用pgadmin3备份数据库中的单个表,以便将其复制到其他服务器.当我尝试对文件执行pg_restore时,我收到错误消息,指出该序列不存在:
pg_restore: [archiver (db)] could not execute query: ERROR: relation "businesses_id_seq" does not exist
Command was:
CREATE TABLE businesses (
id integer DEFAULT nextval('businesses_id_seq'::regclass) NOT NULL,
name character varyin...
Run Code Online (Sandbox Code Playgroud)
看起来转储文件不包含我的自动递增列的序列.如何将其包括在内?
我厌倦了XML和Python.任务很简单,但到目前为止我无法解决它并花了很长时间.我来这里是为了建议如何用几行来解决它.
感谢您遍历树的任何帮助.我总是得到太多或太少的元素.元素可以无限制地嵌套.举个例子就是一个例子.我会接受任何解决方案,而不是挑剔dom,minidom,sax,等等......
我有一个类似于这个的XML文件:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="en">Content EN</elm>
<elm lang="cs">žlu?ou?ký koní?ek</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="en">Content EN</elm>
<elm lang="cs">Content CS</elm>
<elm lang="en">
<elm>Content EN</elm>
<elm>Content EN</elm>
</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Run Code Online (Sandbox Code Playgroud)
我需要的 - 解析XML并编写一个新文件.新文件应包含给定语言的所有元素和没有lang属性的元素.
对于"cs"语言,输出文件应包含以下内容:
<root>
<elm>
<elm>Common content</elm>
<elm xmlns="http://example.org/ns">
<elm lang="cs">žlu?ou?ký koní?ek</elm>
</elm>
<elm xml:id="abc123">Common content</elm>
<elm lang="cs">Content CS</elm>
<elm lang="cs">
<elm>Content CS</elm>
<elm>Content CS</elm>
</elm>
</elm>
</root>
Run Code Online (Sandbox Code Playgroud)
如果你可以让它省略lang新文件中的属性,那就更好了.但它并不重要.
UPDATE1:添加了unicode字符和名称空间属性.
UPDATE2:使用Python 2.5,首选标准库.
在测试期间,我发现调用traceback.extract_stack()非常慢。获取堆栈跟踪的价格与执行数据库查询相当。
我想知道我是否做错了什么或遗漏了什么。令我惊讶的是,我认为调用extract_stack()是 Python 中的内部调用,它是在运行时在内存中执行的,如果不是即时的,它应该是超快的。相比之下,调用数据库查询涉及到外部服务(网络通信)等。
示例代码如下。您可以尝试在 20.000 次迭代中检索回溯所需的时间以及从堆栈跟踪中检索前几项的速度 - 将limit=None参数设置为其他内容。
我的测试在各种系统/配置上显示了各种结果,但都有一个共同点,即调用堆栈跟踪并不是便宜几个数量级,它几乎与调用 SQL insert 相同。
20k SQL inserts | 20k stack traces
Win 5.4 sec 14.4 sec
FreeBSD 5.0 sec 3.7 sec
Ubuntu GCP 16.6 sec 2.4 sec
Run Code Online (Sandbox Code Playgroud)
Windows:笔记本电脑,本地 SSD。FreeBSD:服务器,本地 SSD。Ubuntu:谷歌云,共享 SSD。
我做错了什么或者有什么解释为什么 traceback.extract_stack() 这么慢?我可以以某种方式更快地检索堆栈跟踪吗?
示例代码。运行$ pip install pytest然后$ pytest -s -v
import datetime
import unittest
import traceback
class TestStackTrace(unittest.TestCase):
def test_stack_trace(self):
start_time = datetime.datetime.now()
iterations = 20000 …Run Code Online (Sandbox Code Playgroud) 我在文本中寻找这些"标签":{t d="var1"}var2{/t}或者{t d="varA"}varB{/t}
可以有更多属性,只有"d"是强制性的:{t d="var1" foo="bar"}var2{/t}
我的问题是 - 如果一行上有更多标签,则只返回一个结果,而不是全部结果.返回的内容(来自下面的测试字符串):
(u'single1', u'Required item3')
我希望得到什么:
(u'single1', u'required1')
(u'single2', u'Required item2')
(u'single3', u'Required item3')
我对此感到困惑.它每行使用一个标记,但每行不使用更多标记.
# -*- coding: UTF-8 -*-
import re
test_string = u'''
<span><img src="img/ico/required.png" class="icon" alt="{t d="single1"}required1{/t}" title="{t d="single2"}Required item2{/t}" /> {t d="single3"}Required item3{/t}</span>
'''
re_pattern = '''
\{t[ ]{1} # start tag name
d=" # "d" attribute
([a-zA-Z0-9]*) # "d" attribute content
".*\} # end of "d" attribute
(.+) # tag content
\{/t\} # end …Run Code Online (Sandbox Code Playgroud)