小编jer*_*use的帖子

postgres自动增量未在显式id插入上更新

我在postgres中有下表:

CREATE TABLE "test" (
    "id" serial NOT NULL PRIMARY KEY,
    "value" text
)
Run Code Online (Sandbox Code Playgroud)

我正在做以下插入:

insert into test (id, value) values (1, 'alpha')
insert into test (id, value) values (2, 'beta')

insert into test (value) values ('gamma')
Run Code Online (Sandbox Code Playgroud)

在前2个插入中,我明确提到了id.但是,在这种情况下,表的自动增量指针不会更新.因此在第3个插入中我得到错误:

ERROR:  duplicate key value violates unique constraint "test_pkey"
DETAIL:  Key (id)=(1) already exists.
Run Code Online (Sandbox Code Playgroud)

我从未在MyISAM和INNODB引擎中的Mysql中遇到过这个问题.显式与否,mysql总是根据最大行id更新自动增量指针.

postgres中这个问题的解决方法是什么?我需要它,因为我希望对我桌子中的某些ID进行更严格的控制.

更新: 我需要它,因为对于某些值我需要有一个固定的ID.对于其他新条目,我不介意创建新的条目.

我认为可以通过在我明确插入id时手动递增nextval指针来实现max(id) + 1.但我不知道该怎么做.

postgresql auto-increment

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

从Python执行Javascript

我有使用xpath爬行的HTML网页.在etree.tostring某个节点的给我这个字符串:

<script>
<!--
function escramble_758(){
  var a,b,c
  a='+1 '
  b='84-'
  a+='425-'
  b+='7450'
  c='9'
  document.write(a+c+b)
}
escramble_758()
//-->
</script>
Run Code Online (Sandbox Code Playgroud)

我只需要输出escramble_758().我可以写一个正则表达式来弄清楚整个事情,但我希望我的代码保持整洁.什么是最好的选择?

我正在浏览以下库,但我没有看到确切的解决方案.他们中的大多数都试图模仿浏览器,使事情变得缓慢.

编辑:一个例子将是伟大的..(准系统会做)

javascript python screen-scraping

46
推荐指数
6
解决办法
8万
查看次数

Node vs python用于创建RESTful Web服务

我正在为移动应用程序创建REST API后端.我很难在python中的Twisted矩阵和Nodejs中的Express Framework之间做出决定.

我经历了几个参考:

  1. Python REST框架建议
  2. Web +移动应用程序的技术堆栈
  3. REST API的最佳语言/框架

像街区的其他孩子一样,我也有同样的要求:

  1. 易于维护.
  2. 可扩展到大流量.
  3. 应该支持MongoDB/NoSQL
  4. 应该安全且易于验证.
  5. Web服务的其他标准要求.

我理解事实:

  1. "它的解决方案是规模,而不是技术."
  2. 任何技术的良好解决方案都将取得成功.
  3. 大多数技术堆栈都有一些值得夸耀的成功案例.

如果我必须选择一个技术堆栈而不是另一个,它应该是什么?一方面,Nodejs提供本机异步和非阻塞I/O功能.但是,twistedmatrix 在它的小猫中有一些非常大的成功故事.在python和其他语言中也可以使用其他框架.其他建议也受到欢迎.

我的具体问题是:我计划在python中使用Twisted Matrix来构建RESTful API.因为我之前有python和django的经验,而且代码非常整洁.我是否应该使用Node或其他技术堆栈?

请不要涉及扩展讨论.

ps1:了解移动应用程序,将其转换为基于地理位置的大规模消息传递.REST API必须处理空间计算.

ps2:我准备好接受信仰的飞跃.

python rest web-services node.js

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

合并几个python词典

我必须合并python字典列表.例如:

dicts[0] = {'a':1, 'b':2, 'c':3}
dicts[1] = {'a':1, 'd':2, 'c':'foo'}
dicts[2] = {'e':57,'c':3}

super_dict = {'a':[1], 'b':[2], 'c':[3,'foo'], 'd':[2], 'e':[57]}    
Run Code Online (Sandbox Code Playgroud)

我写了以下代码:

super_dict = {}
for d in dicts:
    for k, v in d.items():
        if super_dict.get(k) is None:
            super_dict[k] = []
        if v not in super_dict.get(k):
            super_dict[k].append(v)
Run Code Online (Sandbox Code Playgroud)

它可以更优雅/优化呈现吗?

注意 我在SO上发现了另一个问题,但它关于合并2个字典.

python merge dictionary

38
推荐指数
6
解决办法
4万
查看次数

XPath在PHP中获取属性值

可能重复:
如何使用PHP的DOM Parser从XML中提取节点属性

如何提取HTML标记值?

HTML:

<input type="hidden" name="text1" id="text1" value="need to get this">
Run Code Online (Sandbox Code Playgroud)

PHP:

$homepage = file_get_contents('http://www.example.com');
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
@$doc->loadHTML($homepage);
$xpath = new DOMXpath($doc);
$filtered = $xpath->query("//input[@name='text1']");
Run Code Online (Sandbox Code Playgroud)

我怎样value才能"需要得到这个"

更新:

我得到了它的工作,并希望它也会帮助其他人.在上面的代码之后,我得到了以下值:

echo $filtered->item(0)->getAttribute('value');
Run Code Online (Sandbox Code Playgroud)

php xpath

31
推荐指数
3
解决办法
6万
查看次数

python pip安装psycopg2安装错误

我做了一个简单pip install psycopg2的mac系统.它安装正常,但当我尝试使用psycopg2时,我收到错误:

Reason: Incompatible library version: _psycopg.so requires version 1.0.0 or later, but libssl.0.9.8.dylib provides version 0.9.8
Run Code Online (Sandbox Code Playgroud)

pip freeze显示psycopg2==2.4.5恰到好处.我已经在几个virtualenvs上安装了psycopg2,但这是我第一次看到这样的错误.我尝试卸载并重新安装,结果相同.请帮忙

python postgresql pip

22
推荐指数
3
解决办法
1万
查看次数

Django Admin-禁用编辑并删除特定型号的"保存"按钮

我有一个Django模型,我希望它只是readonly.不允许添加和编辑.

我在readAdly中标记了所有字段,并在ModelAdmin中覆盖了has_add_permission:

class SomeModelAdmin(admin.ModelAdmin):
     def has_add_permission(self, request):
        return False
Run Code Online (Sandbox Code Playgroud)

有类似的has_edit_permission吗?可以禁用哪个删除"保存"和"保存并继续"按钮?并通过简单的"关闭并返回"按钮替换.

Django文档仅提及只读字段而不是覆盖编辑权限.

django django-admin

18
推荐指数
6
解决办法
2万
查看次数

为什么deepcopy不会创建对lambda函数的新引用?

在python中发现这个奇怪:

class SomeClass():
    def __init__(self):
        pass

a = [SomeClass()]
b = copy.deepcopy(a)
Run Code Online (Sandbox Code Playgroud)

输出:

>>> a
[<__main__.Some instance at 0x10051b1b8>]
>>> b
[<__main__.Some instance at 0x10051b092>]
Run Code Online (Sandbox Code Playgroud)

这与预期一样 - deepcopy SomeClass()为b 创建了新对象.

但是,如果,

f = lambda x:x+1
a = [f]
b = copy.deepcopy(a)
Run Code Online (Sandbox Code Playgroud)

我明白了:

>>> a
[<function <lambda> at 0x10056e410>]
>>> b
[<function <lambda> at 0x10056e410>]
Run Code Online (Sandbox Code Playgroud)

为什么deepcopy在第二种情况下不会创建新的lambda实例?这是否意味着lambda函数是原子的?

python

13
推荐指数
3
解决办法
1069
查看次数

从文本字符串中删除2个字符之间的字符

我有文字字符串,如:

"abcd[e]yth[ac]ytwec"
Run Code Online (Sandbox Code Playgroud)

我需要

"abcdythytwec"
Run Code Online (Sandbox Code Playgroud)

在python中使用正则表达式或其他方法最简单的方法是什么?我正在使用.split('[')繁琐的方法.

python regex

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

django南迁,没有设置默认值

我用南方来迁移我的django模型.然而,南方有一个令人讨厌的虫子.它没有在Postgres数据库中设置默认值.例:

created_at = models.DateTimeField(default = datetime.now)
tag_id = models.PositiveIntegerField(default = 0)
Run Code Online (Sandbox Code Playgroud)

South会将这两个字段添加到数据库中,但无法设置其默认值,这需要手动完成.

这个bug有没有补丁?

更新 我已经尝试过设置默认日期auto_now_add=True,但这也没有设置默认值.添加null=True字段会添加db.alter_column由南方生成的迁移脚本.但是这只会删除NOT NULL约束,不添加默认值.整数字段相同

python django django-south

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