小编Joh*_*ell的帖子

更新为单个新列时,数据库大小会翻倍

我有一个相当简单的表用于驱动web映射应用程序的tile处理.

   Column      |    Type                  |    Modifiers                        
---------------+--------------------------+---------------------------------------------------------
 id            | integer                  | not null default
                                             nextval('wmts_tiles_id_seq'::regclass)
 tile_matrix   | integer                  | 
 rowx          | integer                  | 
 coly          | integer                  | 
 geom          | geometry(Geometry,27700) | 
 processed     | smallint                 | 

Indexes:
   "wmts_tiles_pkey" PRIMARY KEY, btree (id)
   "wmts_tiles_wmts_tile_matrix_x_y" UNIQUE CONSTRAINT, btree (tile_matrix, rowx, coly)
   "ix_spatial_wmts_tiles" gist (geom)
   "ix_tile_matrix_processed" btree (tile_matrix, processed)
Run Code Online (Sandbox Code Playgroud)

具有各种索引(一个空间)和如图所示的constaints.该表有2.4亿行,pg_relation_size和pg_total_relation_size表示该表为66 GB,其中一半是索引,一半是数据.

我添加了一个日期列,然后运行更新以填充它,

alter database wmts_tiles add column currency_date date;
update wmts_tiles set currency_date = '2014-05-01'
Run Code Online (Sandbox Code Playgroud)

在此之后,大小达到133 GB,即它增加了一倍.一旦我在桌面上运行VACUUM FULL,大小缩小到67 GB,即比以前大1GB,这是你在添加2.4亿行4字节字段(日期)后所期望的.

我知道在表中经常会有相当比例的死行,其中发生了大量的插入和删除,但为什么在单个更新下表的大小会翻倍并且我能做些什么来防止这种情况?请注意,此更新是唯一正在运行的事务,并且该表刚刚被转储并重新创建,因此数据页和索引在更新之前处于紧凑状态.

编辑:我已经看到了这个问题,为什么我的postgres表在更新时会变得更大? …

postgresql

6
推荐指数
1
解决办法
2097
查看次数

使用Pandas读取JSON时的"预期字符串或Unicode"

我尝试读取一个有效的Openstreetmaps API输出JSON字符串.

我使用以下代码:

import pandas as pd
import requests

# Links unten
minLat = 50.9549
minLon = 13.55232

# Rechts oben
maxLat = 51.1390
maxLon = 13.89873

osmrequest = {'data': '[out:json][timeout:25];(node["highway"="bus_stop"](%s,%s,%s,%s););out body;>;out skel qt;' % (minLat, minLon, maxLat, maxLon)}
osmurl = 'http://overpass-api.de/api/interpreter'
osm = requests.get(osmurl, params=osmrequest)

osmdata = osm.json()

osmdataframe = pd.read_json(osmdata)
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-66-304b7fbfb645> in <module>()
----> 1 osmdataframe = pd.read_json(osmdata)

/Users/paul/anaconda/lib/python2.7/site-packages/pandas/io/json.pyc in read_json(path_or_buf, orient, typ, dtype, convert_axes, convert_dates, …
Run Code Online (Sandbox Code Playgroud)

python json openstreetmap pandas overpass-api

6
推荐指数
1
解决办法
9860
查看次数

在Yii2中运行一个cron

我正在使用yii2的高级模板应用程序,我想创建一个cron.谷歌搜索主题时我只能找到很少的信息,到目前为止发现cron作业应该进入控制台文件夹.

我的结构:

backend/
. 
.
.
console/
    models/
        Subscriptions.php   // my custom table model
    .
    .
    .       
    controllers/
        TimelineController.php
    .
    .
    .
Run Code Online (Sandbox Code Playgroud)

我不知道从现在开始去哪里或怎么办?我怎么能运行cron?

LAMP环境.

php cron yii2

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

使用System.out.print()在"控制台"上打印行的准确程度

如果我想打印一条线

这是Java编程语言

到控制台使用System.out.print(),使用哪个和多少进程来打印这一行,以及我们如何比较它与使用FileWriter或写相同的行到文件BufferedWriter.

java

5
推荐指数
1
解决办法
139
查看次数

使用 Fastkml 读取 KML 文件

我已经搜索了很多关于这个特定 Python 模块的内容,但一直无法找到一个可以为我指明正确方向的来源。

我正在尝试读取 KML 文件并显示文件夹内的所有功能,我相信我是使用 fastkml 实现的,但是我遇到了问题。

使用以下代码一切正常,直到行 len(k.features)。我尝试打印它,添加文档中所示的引号,但没有任何效果。任何人都可以指出我正确的方向吗?

谢谢。

示例:https : //github.com/cleder/fastkml

代码:

from fastkml import  kml
doc = file("Allpoints.kml").read()
k = kml.KML()
k.from_string(doc)
len(k.features())
Run Code Online (Sandbox Code Playgroud)

python kml

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

知名文本的正则表达式

我正在查看正则表达式来验证和解析众所周知的文本,这是一种用于传输空间数据的格式,如下所示:

POLYGON((51.124 -3.973, 51.1 -3.012, ....))
Run Code Online (Sandbox Code Playgroud)

或者

MULTIPOLYGON(((POLYGON((51.124 -3.973, 51.1 -3.012, ....)),POLYGON((50.14 -13.973, 51.1 -13.012, ....))
Run Code Online (Sandbox Code Playgroud)

除其他变化外。

这里有一个很好的答案:解析使用正则表达式的 WKT 文件

\d+(?:\.\d*)?
Run Code Online (Sandbox Code Playgroud)

从其他地方我也看到

\d*\.\d+|\d+
Run Code Online (Sandbox Code Playgroud)

(\d*\.)?\d+
Run Code Online (Sandbox Code Playgroud)

这些似乎都在做同样的事情,但它让我想知道这 3 个正则表达式的相对工作原理,以及是否有任何性能问题或需要注意的细微之处。

需要明确的是,我知道有用于解析各种语言的 WKT 的库。我的问题纯粹是关于数字提取正则表达式的相对行为。

regex wkt

5
推荐指数
1
解决办法
3809
查看次数

球体上密度最高的位置

我在球体的表面上有很多点.如何计算具有最大点密度的球体的面积/点?我需要这么快完成.如果这是一个正方形,例如我想我可以创建一个网格然后让点投票哪个部分的网格是最好的.我已经尝试将点变换为球面坐标,然后做一个网格,这两个都不能很好地工作,因为北极周围的点在球体上很近但在变换后很远.

谢谢

algorithm math geometry computational-geometry

5
推荐指数
2
解决办法
3924
查看次数

在try和except语句中使用return语句是否正确?

如果我在函数末尾有这样的代码:

try:
    return map(float, result)
except ValueError, e:
    print "error", e
Run Code Online (Sandbox Code Playgroud)

在方法的返回部分中使用try /正确吗?有解决这个问题的更明智的方法吗?

python methods exception-handling return try-except

5
推荐指数
1
解决办法
5888
查看次数

如何从 Django 多对多字段获取数据?

有人可以向我解释如何从多对多领域获取数据。我的型号:

class Subcat(models.Model):
    subcat_name = models.CharField(max_length=128,default='Unknown')
    active1 = models.BooleanField()
    variants = models.ManyToManyField('Variants')
    lang = models.ForeignKey('Lang',default=1)

    def __unicode__(self):
        return self.subcat_name

class Variants(models.Model):
    lang = models.ForeignKey('Lang')
    name  = models.CharField(max_length=256)
    descr = models.CharField(max_length=500,default='Unknown')

    def __unicode__(self):
        return self.name

class Lang(models.Model):
    name  = models.CharField(max_length=25)
    code  = models.CharField(max_length=5)

    def __unicode__(self):
        return self.name
Run Code Online (Sandbox Code Playgroud)

在类 Subcat 用户定义子类别,默认为英语,例如:

subcat_name = "Museums"
active1 = 1
variants = Muzeji,...
lang = en
Run Code Online (Sandbox Code Playgroud)

所以默认语言是英语,当我想要英语子猫的时候很容易得到

subcategory="Museums"
data= Subcat.objects.get(subcat_name=subcategory)
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:例如,当用户使用另一种语言时

subcategory= "Muzeji"
data=?????
Run Code Online (Sandbox Code Playgroud)

我如何根据该信息进行查询,该信息将返回我的 id,其中 subcat_name 是博物馆...

有人可以详细解释我如何从多对多字段中获取数据或向我指出一些好的教程...

django django-models

5
推荐指数
0
解决办法
5389
查看次数

Java中有趣的线程行为

我在Java中学习了多线程的概念,在那里我遇到了这个非常有趣的行为.我正在尝试各种创建线程的方法.现在问的是我们在扩展a Thread而不是实现Runnable接口的时候.

在旁注中,我知道它实现Runnable接口而不是扩展Thread类是完美的OO意义,但是出于这个问题的目的,让我们说我们扩展了Thread类.

t我的扩展Thread类的实例,我有一个代码块在后台执行,写在我run()Thread类的方法中.

它完全在后台运行t.start(),但我有点好奇并称之为t.run()方法.在主线程中执行的代码片段!

t.start()t.run()不是做什么的?

java multithreading

5
推荐指数
1
解决办法
340
查看次数