我在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
.但我不知道该怎么做.
我有使用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()
.我可以写一个正则表达式来弄清楚整个事情,但我希望我的代码保持整洁.什么是最好的选择?
我正在浏览以下库,但我没有看到确切的解决方案.他们中的大多数都试图模仿浏览器,使事情变得缓慢.
it's not yet possible to call a function defined in Javascript
)编辑:一个例子将是伟大的..(准系统会做)
我正在为移动应用程序创建REST API后端.我很难在python中的Twisted矩阵和Nodejs中的Express Framework之间做出决定.
我经历了几个参考:
像街区的其他孩子一样,我也有同样的要求:
我理解事实:
如果我必须选择一个技术堆栈而不是另一个,它应该是什么?一方面,Nodejs提供本机异步和非阻塞I/O功能.但是,twistedmatrix 在它的小猫中有一些非常大的成功故事.在python和其他语言中也可以使用其他框架.其他建议也受到欢迎.
我的具体问题是:我计划在python中使用Twisted Matrix来构建RESTful API.因为我之前有python和django的经验,而且代码非常整洁.我是否应该使用Node或其他技术堆栈?
请不要涉及扩展讨论.
ps1:了解移动应用程序,将其转换为基于地理位置的大规模消息传递.REST API必须处理空间计算.
ps2:我准备好接受信仰的飞跃.
我必须合并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个字典.
如何提取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) 我做了一个简单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,但这是我第一次看到这样的错误.我尝试卸载并重新安装,结果相同.请帮忙
我有一个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文档仅提及只读字段而不是覆盖编辑权限.
在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函数是原子的?
我有文字字符串,如:
"abcd[e]yth[ac]ytwec"
Run Code Online (Sandbox Code Playgroud)
我需要
"abcdythytwec"
Run Code Online (Sandbox Code Playgroud)
在python中使用正则表达式或其他方法最简单的方法是什么?我正在使用.split('[')
繁琐的方法.
我用南方来迁移我的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 ×7
django ×2
postgresql ×2
dictionary ×1
django-admin ×1
django-south ×1
javascript ×1
merge ×1
node.js ×1
php ×1
pip ×1
regex ×1
rest ×1
web-services ×1
xpath ×1