小编Jos*_*rns的帖子

eliminate duplicate array values in postgres

I have an array of type bigint, how can I remove the duplicate values in that array?

Ex: array[1234, 5343, 6353, 1234, 1234]

I should get array[1234, 5343, 6353, ...]

I tested out the example SELECT uniq(sort('{1,2,3,2,1}'::int[])) in the postgres manual but it is not working.

postgresql

69
推荐指数
7
解决办法
6万
查看次数

使用PostgreSQL 9.4计算JSONB数组长度

我正在运行最新版本的PostgreSQL 9.4.5-1.pgdg14.04+1,并尝试使用PostgreSQL 9.4文档中JSON_ARRAY_LENGTH描述的函数计算JSONB数组的长度

这是我试图运行的确切查询:

SELECT JSON_ARRAY_LENGTH('["hi","ho"]'::jsonb) AS length
Run Code Online (Sandbox Code Playgroud)

当我运行该查询时,我希望返回一个值2,但是遇到错误:ERROR: function json_array_length(jsonb) does not exist

我错过了文档中非常明显的内容吗?它特别声明您可以调用JSON_ARRAY_LENGTH传递jsonjsonb数据类型.我明确地施展,jsonb所以我有点不知所措.

有没有其他人遇到过这个问题,或者有人会指出我在这里做错了什么?

更新:我误读了文档

我本来应该打电话JSONB_ARRAY_LENGTH,而不是JSON_ARRAY_LENGTH.注意"JSON"之后的"B".多谢你们.

postgresql jsonb postgresql-9.4

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

将Python Decimal对象格式化为指定的精度

我花了无数个小时研究,阅读,测试,并最终对Python的Decimal对象缺乏最基本的概念感到困惑和沮丧:将Decimal的输出格式化为字符串.

假设我们有一些字符串或Decimal对象具有以下值:

   0.0008
  11.1111
 222.2222
3333.3333
1234.5678
Run Code Online (Sandbox Code Playgroud)

目标是简单地将Decimal的精度设置为小数点后第二位.例如,11.1111将被格式化为11.11,和1234.5678作为1234.57.

我设想类似于以下代码:

import decimal
decimals = [
  decimal.Decimal('0.0008'),
  decimal.Decimal('11.1111'),
  decimal.Decimal('222.2222'),
  decimal.Decimal('3333.3333'),
  decimal.Decimal('1234.5678'),
]
for dec in decimals:
  print dec.as_string(precision=2, rounding=ROUND_HALF_UP)
Run Code Online (Sandbox Code Playgroud)

结果输出将是:

0.00
11.11
222.22
3333.33
1234.57
Run Code Online (Sandbox Code Playgroud)

显然我们不能使用Decimal的上下文的精度,因为这考虑了TOTAL的位数,而不仅仅是小数精度.

我也没有兴趣将Decimal转换为float来输出它的值.Decimal背后的原因是避免在浮点数上存储和运行计算.

还有哪些其他解决方案?我知道堆栈溢出还有许多其他类似的问题,但我找不到解决我所询问的潜在问题.

非常感谢!

python decimal python-2.7 python-3.x

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

GROUP BY和聚合顺序数值

使用PostgreSQL 9.0.

比方说,我有一个包含字段的表:company,professionyear.我想返回一个包含独特公司和专业的结果,但基于数字序列聚合(到一个数组中很好)年份:

示例表:

+-----------------------------+
| company | profession | year |
+---------+------------+------+
| Google  | Programmer | 2000 |
| Google  | Sales      | 2000 |
| Google  | Sales      | 2001 |
| Google  | Sales      | 2002 |
| Google  | Sales      | 2004 |
| Mozilla | Sales      | 2002 |
+-----------------------------+
Run Code Online (Sandbox Code Playgroud)

我对一个输出类似于以下行的查询感兴趣:

+-----------------------------------------+
| company | profession | year             |
+---------+------------+------------------+
| Google  | Programmer | [2000]           |
| …
Run Code Online (Sandbox Code Playgroud)

sql postgresql plpgsql window-functions gaps-and-islands

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

Redis:返回存储在数据库中的所有值

我们使用Redis在DB 0中存储各种应用程序配置.

是否可以在数据库中查询Redis以获取每个键/值对,而无需执行两个单独的查询并自行加入键/值对?

我希望功能类似于以下内容:

kv = redis_conn.getall()
# --OR-- #
kv = redis_conn.mget('*')
Run Code Online (Sandbox Code Playgroud)

...哪里kv会返回元组元组,列表列表或字典:

但是在搜索StackOverflow,Google和Redis文档之后,我可以推导出的唯一解决方案(我还没有找到其他人问这个问题......)类似于以下内容:

import redis
red = redis.Redis(host='localhost', db=0)
keys = red.keys()
vals = red.mget(keys)
kv = zip(keys, vals)
Run Code Online (Sandbox Code Playgroud)

我在这里疯狂,假设有一个更优雅的方法解决这个问题?

附加信息

此数据库中的每个值都是一个String.

我的问题不是如何检索每个唯一数据类型或相关数据类型的值.

相反,我的问题是:有没有办法说"hey Redis, return to me every string value in the database"不必要求密钥,然后根据返回的密钥查询值?

python redis

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

在Python中删除多个MongoDB文档

问候,

我试图使用以下语法从MongoDB集合中删除多个文档.我不知道这是否正确,因为我发现它在互联网上的某个地方并且由于强制执行此声明的合法性而无法找到任何内容:

pymongo_collection_object.remove(
    [
        {
            'sku': '100-00'
        },
        {
            'sku': '200-00'
        }
    ]
, safe=True)
Run Code Online (Sandbox Code Playgroud)

我希望上面的代码可以删除两个文件,包括'sku'值'100-00'或'200-00',但不幸的是这两个文件仍然存在于集合中.我也尝试将'sku'键及其值转换为Unicode,因为我知道它们存储在此编码中.正如您所知,我也启用了安全模式,确保服务器端没有任何异常情况发生.

任何帮助表示赞赏,谢谢!

python mongodb nosql pymongo

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

将具有未知编码的文件从Python导入MongoDB

在Python中通过HTTP导入制表符分隔文件.

在将行的数据插入MongoDB之前,我将从字符串中删除斜杠,刻度和引号.

无论数据的编码是什么,MongoDB都给我一个例外:

bson.errors.InvalidStringData: strings in documents must be valid UTF-8
Run Code Online (Sandbox Code Playgroud)

所以在努力解决这个问题时,从我已经完成的阅读中我想尽可能快地使用unicode()函数将行的数据转换为Unicode.另外,我试过调用decode()函数传递"unicode"作为第一个参数,但收到错误:

LookupError: unknown encoding: unicode
Run Code Online (Sandbox Code Playgroud)

从那里,我可以进行字符串操作,例如替换斜线,刻度和引号.然后在将数据插入MongoDB之前,使用str.encode('utf-8')函数将其转换为UTF-8.

问题:转换为Unicode时,我收到错误

UnicodeDecodeError: 'ascii' codec can't decode byte 0x93 in position 1258: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

有了这个错误,我不确定在哪里继续.

我的问题是:如何在不知道编码的情况下成功导入文件中的数据并成功将其插入需要UTF-8的MongoDB?

非常感谢!

python character-encoding mongodb

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

从 jQuery 中的所有元素中获取属性的值

假设我们有以下 HTML:

<entries>
  <entry id="1" />
  <entry id="2" />
  <entry id="3" />
  <entry id="4" />
</entries>
Run Code Online (Sandbox Code Playgroud)

jQuery 是否具有用于检索特定属性的所有值的内置机制?如果没有,那么检索它们的最有效方法是什么?

例如,类似于: $('entry').attrs('id'),返回所有元素的值列表,返回类似于["1", "2", "3", "4"]?

General Attributes下的 jQuery 文档(attr找到的位置)没有给出任何存在的提示,我在 StackOverflow 或任何其他支持论坛上也没有发现任何询问这个问题的内容。

javascript jquery attributes

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

在PostgreSQL中返回行记录

我正在尝试编写一个SELECT查询,该查询返回RECORDROWS

我已经解决了一半的问题,因为我可以获得一个RECORD返回单个ROW。但是,如何返回一组ROWS呢?

以以下查询为例:

SELECT * FROM
  RECORD(
    (
      ROW(1::integer, 'Florida'::character varying)
    )
  ) AS tbl (id integer, state character varying)
Run Code Online (Sandbox Code Playgroud)

我得到了我的期望:

+==============+
| id | state   |
+====+=========+
| 1  | Florida |
+----+---------+
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试向记录中添加一个额外的ROW时,这是我遇到的问题:

SELECT * FROM
  RECORD(
    (
      ROW(1::integer, 'Florida'::character varying),
      ROW(2::integer, 'Georgia'::character varying)
    )
  ) AS tbl (id integer, state character varying)
Run Code Online (Sandbox Code Playgroud)

我预期结果类似于:

+==============+
| id | state   |
+====+=========+
| 1  | Florida |
+----+---------+
| 2  | Georgia | …
Run Code Online (Sandbox Code Playgroud)

postgresql postgresql-9.2

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