小编Lud*_*udo的帖子

Postgresql - 求和时如何将 NaN 视为 0?

我有一个包含数值和 NaN 的表。求和时,如果所选值包含 NaN,则结果将为 NaN。有没有办法让postgresql在求和时将它们视为0而不是NaN?或者我只需将表中的所有 NaN 转换为 0 或 Null?

postgresql null sum nan aggregate-functions

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

单元测试中的自定义异常

我在其中创建了自定义异常 errors.py

mapper = {
    'E101':
    'There is no data at all for these constraints',
    'E102':
    'There is no data for these constraints in this market, try changing market',
    'E103':
    'There is no data for these constraints during these dates, try changing dates',
}


class DataException(Exception):
    def __init__(self, code):
        super().__init__()
        self.msg = mapper[code]

    def __str__(self):
        return self.msg
Run Code Online (Sandbox Code Playgroud)

DataException如果数据pandas帧中没有足够的数据,代码中其他地方的另一个函数会引发不同的实例.我想用unittest它来确保它返回相应的异常及其相应的消息.

使用一个简单的例子,为什么这不起作用:

from .. import DataException
def foobar():
    raise DataException('E101')

import unittest
with unittest.TestCase.assertRaises(DataException):
    foobar()
Run Code Online (Sandbox Code Playgroud)

正如这里建议的那样:Python assertRaises用户定义的异常 …

python unit-testing assertraises python-3.x python-unittest

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

python - 将 pandas 数据帧转换为 json 或 dict,然后返回到具有非唯一列的 df

我需要将数据帧从后端发送到前端,因此首先需要将其转换为 JSON 可序列化的对象或直接转换为 JSON。问题是我有一些没有唯一列的数据框。我已经研究了orient参数、to_json()方法to_dict()from_dict()但仍然无法让它工作......

目标是能够将 df 转换为可序列化的 json,然后返回到其初始状态。

我也很难使用 pd.read_clipboard 复制粘贴它,因此我包含了一个导致问题的示例 df 作为图像(抱歉!)。

在此输入图像描述

python dataframe python-3.x pandas to-json

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

docker-compose 与来自 sql 转储的多个 postgres 数据库

我知道这看起来像是docker-compose 与多个数据库的重复,但在通过答案后我仍然无法让它工作。

这是我的docker-compose.yml

version: '3'
services:
  backend:
    image: backend:1.0
    build: ./backend
    ports:
      - "9090:9090"
    depends_on:
      - db
      - ppt
    environment:
      - DATABASE_HOST=db
  db:
    image: main_db:26.03.18
    restart: always
    build: ./db
    ports:
      - "5432:5432"
  ppt:
    image: ppt_generator:1.0
    build: ./ppt
    ports:
      - "6060:6060"
  login:
    image: login:1.0
    build: ./login
    ports:
      - "7070:7070"
    depends_on:
      - login_db
  login_db:
    image: login_db:27.04.2018
    restart: always
    build: ./login_db
    ports:
      - "5433:5433"
Run Code Online (Sandbox Code Playgroud)

请注意,我在端口 5433 上有一个数据库,另一个在 5432 上。但是,当我docker ps在启动容器后运行时,我得到以下信息。我不完全了解端口发生了什么。

CONTAINER ID        IMAGE                 COMMAND                  CREATED              STATUS …
Run Code Online (Sandbox Code Playgroud)

python postgresql docker dockerfile docker-compose

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

python-在dotdict上使用copy.deepcopy

我在应用程序周围的各个位置使用了dotdict来增强代码的可读性。我几乎不知道这会在以后引起很多问题。一个特别烦人的情况是它似乎与副本库不兼容。

这就是我的意思

class DotDict(dict):
    """dot.notation access to dictionary attributes"""
    __getattr__ = dict.get
    __setattr__ = dict.__setitem__
    __delattr__ = dict.__delitem__
Run Code Online (Sandbox Code Playgroud)

即这样访问字典属性的方法: dictionary.attribute

当我尝试

nested_dico = DotDict({'example':{'nested':'dico'}})
copy.deepcopy(nested_dico)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/copy.py in deepcopy(x, memo, _nil)
    167                     reductor = getattr(x, "__reduce_ex__", None)
    168                     if reductor:
--> 169                         rv = reductor(4)
    170                     else:
    171                         reductor = getattr(x, "__reduce__", None)

TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)

我认为这是因为它无法识别我的类DotDict,因此将其视为NoneType。

有谁知道解决这个问题的方法吗?也许重写副本库的有效类型?

python copy deep-copy python-3.x

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

python3 - 如何克服 python 请求的最大 url 限制

我有两个 python 应用程序使用 web.py 在不同的端口上运行。我正在尝试将 30,000-40,000 个字符范围内的 JSON 字符串从一个应用程序发送到另一个应用程序。JSON 包含生成 powerpoint 报告所需的所有信息。我尝试使用以下请求启用此通信:

import requests
template = <long JSON string>     
url = 'http://0.0.0.0:6060/api/getPpt?template={}'.format(template)
resp= requests.get(url).text
Run Code Online (Sandbox Code Playgroud)

我注意到在接收端,json 已被截断为 803 个字符长,因此当它解码 JSON 时,我得到:

json.decoder.JSONDecodeError: Unterminated string starting at: line 1 column 780 (char 779)
Run Code Online (Sandbox Code Playgroud)

我认为这必须限制 URL 请求的长度,来自 web.py 或请求,或者这是标准化的事情。有没有办法解决这个问题,或者我需要找到另一种方式来启用这两个 python 应用程序之间的通信。如果无法通过 http 发送这么长的 JSON,请您提出替代方案。谢谢!

python json web.py python-3.x python-requests

0
推荐指数
1
解决办法
5637
查看次数