小编s.k*_*s.k的帖子

您正在通过 HTTPS 访问开发服务器,但它仅支持 HTTP。代码 400,消息请求语法错误

我刚刚开始学习 Django 框架,并尝试在 DigitalOcean 的服务器上部署我的第一个项目。如果我跑

\n
python3 manage.py runserver 0.0.0.0:8000\n
Run Code Online (Sandbox Code Playgroud)\n

服务器启动。但是,一旦我尝试从 (my-rent-ip):8000 访问它,我会得到以下信息:

\n
[25/Aug/2021 01:49:01] code 400, message Bad request syntax ('\\x16\\x03\\x01\\x02\\x00\\x01\\x00\\x01\xc3\xbc\\x03\\x03G\xc3\x9b\xc3\xae}\xc3\x98\xc2\xb2\\x921\\x0e\\x94\\x17\\x9c\xc3\x8fe\xc2\xb9\\x88\xc3\xb1\xc3\xbf\xc3\x83\\x16\\x01\xc3\xa9\xc3\x96R\xc3\x9d\\x00\\x95F\\x8aG\\t\xc3\x89 8\xc2\xaf,\xc3\xba\xc3\x82\\x93\xc2\xb4\xc3\xb9\\x06\xc3\x9d\\x14\xc2\xbez\\x13\xc3\x82e4[\\x9a,.\xc3\xa6\\x96+$<~\\x8eq<\xc2\xb4\\t\\x00"ZZ\\x13\\x01\\x13\\x02\\x13\\x03\xc3\x80+\xc3\x80/\xc3\x80,\xc3\x800\xc3\x8c\xc2\xa9\xc3\x8c\xc2\xa8\xc3\x80\\x13\xc3\x80\\x14\\x00\\x9c\\x00\\x9d\\x00/\\x005\\x00')\n
Run Code Online (Sandbox Code Playgroud)\n

[25/Aug/2021 01:49:01] You're accessing the development server over HTTPS, but it only supports HTTP

\n

如果我运行生产服务器而不是开发服务器,这怎么可能?

\n

我可能做错了什么,setting.py因为出于生产目的必须对其进行大量更改。我创建了一个生产分支,更改了settings.py文件,并使用 GitHub 克隆到服务器。这里是:

\n
\nfrom pathlib import Path\n\nfrom dotenv import load_dotenv   #for python-dotenv method\nload_dotenv()\n\n# Build paths inside the project like this: BASE_DIR / 'subdir'.\nBASE_DIR = Path(__file__).resolve().parent.parent\n\n\n# Quick-start development settings - unsuitable for production\n# …
Run Code Online (Sandbox Code Playgroud)

django https http digital-ocean ubuntu-18.04

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

DataFrame.to_sql 相当于在 psycopg2 中使用“RETURNING id”?

使用插入数据时,psycopg2我可以使用RETURNING PostgreSQLid语句检索插入的行:

import psycopg2

conn = my_connection_parameters()
curs = conn.cursor()

sql_insert_data_query = (
    """INSERT INTO public.data
        (created_by, comment)
        VALUES ( %(user)s, %(comment)s )
        RETURNING id; # the id is automatically managed by the database.
    """
)

curs.execute(
    sql_insert_data_query,
    {
        "user": 'me',
        "comment": 'my comment'
    }
)

conn.commit()
data_id = curs.fetchone()[0]
Run Code Online (Sandbox Code Playgroud)

这很好,因为我需要它id来写入其他数据,例如关联表。

但是当有一个大字典要写入 PostgreSQL 时(键是列标识符),依赖 pandas 的DataFrame.to_sql()方法会更方便:

import pandas as pd
from sqlalchemy import create_engine

engine = create_engine('postgresql+psycopg2://', creator=my_connection_parameters)
df = pd.DataFrame(my_dict, …
Run Code Online (Sandbox Code Playgroud)

python postgresql dataframe pandas

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

创建网关时(例如使用 Compose 文件时)Docker 可以使用哪些 IP 地址范围

我有一个天真的问题,但我注意到通过使用一些 Compose 文件,docker 以表单172.x.0.1为我的项目的所有网络创建网关地址。x通常总是(?)递增(除非重新启动docker服务),从18开始(因为默认桥接网络使用17)直到......一些我在文档中无法弄清楚的数字。之后,docker 跳转到 形式的网关192.168.y.1,在这里,我再次无法弄清楚ydocker 可以使用哪些值范围,以及它在所有这些范围中选择网关地址的策略是什么。

我的强烈印象是它只选择私有IP地址。但我还没有看到诸如 之类的地址10.a.b.c

任何人都可以向我解释一下,最好有一些官方资源,docker 在创建桥接网络时实际上如何选择网关地址(特别是在 Compose 文件的情况下),docker 可用的所有地址池是什么(以及是否可以手动定义或限制这些范围)?

我查阅的一些页面没有取得太大成功:
https://docs.docker.com/network/
https://docs.docker.com/network/bridge/
https://docs.docker.com/network/network-教程独立/
https://docs.docker.com/compose/networking/ https://github.com/compose-spec/compose-spec/blob/master/spec.md

docker docker-compose docker-network

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

PostgreSQL 仅当列存在时才重命名该列

我在PostgreSQL 文档中找不到是否有办法运行:ALTER TABLE tablename RENAME COLUMN IF EXISTS colname TO newcolname;语句。

我很高兴我们可以,因为我面临的错误取决于谁制作并给了我一个 SQL 脚本,在某些情况下一切都很好(当列的名称错误时,名称实际上会被更改)使用RENAME语句),而在其他情况下则不会(当列已经具有正确的名称时)。

因此,在尝试重命名IF EXISTS时使用对列名的语句的想法。如果列已经有了正确的名称(此处cust_date_mean),则应正确跳过必须仅应用于错误名称的重命名命令,并且不会发出以下错误:

db_1   | [223] ERROR: column "cust_mean" does not exist
db_1   | [223] STATEMENT: ALTER TABLE tablename RENAME COLUMN cust_mean TO cust_date_mean;
db_1   | ERROR:  column "cust_mean" does not exist
Run Code Online (Sandbox Code Playgroud)

(与此同时,我将与团队澄清事情,因此,如果这样的命令不存在,那也没什么大不了的,但我认为它会有所帮助)。

postgresql rename

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

使用 psycopg2 将 git 修订哈希 (SHA-1) 写入 PostgreSQL 数据库

短的

将 git 修订哈希值 (SHA-1) 存储f844cdc09651448d6c3e765fadac448253a16928PostgreSQL数据库 (> v.11)中的最高效且有效的方法是什么psycopg2

详细信息和代码

我有一个 SHA-1 哈希作为 Python 中的十六进制字符串,我想将其存储在 PostgreSQL 数据库中:

import psycopg2
from subprocess import Popen, PIPE

psycopg2.__version__ # prints '2.9.1 (dt dec pq3 ext lo64)'

cmd_list = [ "git", "rev-parse", "HEAD", ]
process = Popen(cmd_list, stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()
git_sha1 = stdout.decode('ascii').strip()

conn = psycopg.connect(**DB_PARAMETERS)
curs = conn.cursor()
sql = """UPDATE table SET git_sha1 = %(git_sha1)s WHERE id=1;"""

curs.execute(
    sql,
    vars = {
        "git_sha1": git_sha1 …
Run Code Online (Sandbox Code Playgroud)

git postgresql sha1 psycopg2 python-3.x

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

将带括号的字符串转换为numpy数组

问题描述:

我在数据帧列中有一个类似数组的结构作为字符串(我从csv文件中读取数据帧).

此列的一个字符串元素如下所示:

In  [1]: df.iloc[0]['points']    
Out [2]: '[(-0.0426, -0.7231, -0.4207), (0.2116, -0.1733, -0.1013), (...)]'
Run Code Online (Sandbox Code Playgroud)

所以它真的是一个类似阵列的结构,看起来像我那样"准备好了".

numpy.fromstring()没有帮助,因为它不喜欢括号:
在python中将数组的字符串表示转换为numpy数组

一个简单numpy.array()的字符串本身,如果我复制并粘贴它在array()函数中返回一个numpy数组.
但是如果我array()用包含字符串的变量填充函数:np.array(df.iloc[0]['points'])它不起作用,给我一个ValueError: could not convert string to float

将字符串转换为numpy数组

问题:

是否有任何功能以简单的方式执行此操作(不替换或正则使用括号)?

python arrays string numpy pandas

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

从Linux上的源构建Boost

描述:

我正在尝试从Ubuntu 18.04上的源代码构建Boost库(1.68)。

https://www.boost.org/doc/libs/1_68_0/more/getting_started/unix-variants.html
https://www.boost.org/users/history/version_1_68_0.html

问题:

1)对于相同的版本,它等效于sudo apt-get install libboost-all-dev吗?...基本上将安装所有这些部门:

The following NEW packages will be installed:    
  libboost-all-dev libboost-atomic-dev libboost-atomic1.65-dev libboost-atomic1.65.1 libboost-chrono-dev libboost-chrono1.65-dev
  libboost-chrono1.65.1 libboost-container-dev libboost-container1.65-dev libboost-container1.65.1 libboost-context-dev
  libboost-context1.65-dev libboost-context1.65.1 libboost-coroutine-dev libboost-coroutine1.65-dev libboost-coroutine1.65.1
  libboost-date-time-dev libboost-date-time1.65-dev libboost-exception-dev libboost-exception1.65-dev libboost-fiber-dev
  libboost-fiber1.65-dev libboost-fiber1.65.1 libboost-filesystem-dev libboost-filesystem1.65-dev libboost-graph-dev
  libboost-graph-parallel-dev libboost-graph-parallel1.65-dev libboost-graph-parallel1.65.1 libboost-graph1.65-dev
  libboost-graph1.65.1 libboost-iostreams-dev libboost-iostreams1.65-dev libboost-locale-dev libboost-locale1.65-dev
  libboost-log-dev libboost-log1.65-dev libboost-log1.65.1 libboost-math-dev libboost-math1.65-dev libboost-math1.65.1
  libboost-mpi-dev libboost-mpi-python-dev libboost-mpi-python1.65-dev libboost-mpi-python1.65.1 libboost-mpi1.65-dev
  libboost-mpi1.65.1 libboost-numpy-dev libboost-numpy1.65-dev libboost-numpy1.65.1 libboost-program-options-dev
  libboost-program-options1.65-dev libboost-program-options1.65.1 libboost-python-dev libboost-python1.65-dev
  libboost-python1.65.1 libboost-random-dev libboost-random1.65-dev libboost-random1.65.1 libboost-regex-dev …
Run Code Online (Sandbox Code Playgroud)

boost build

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

在 double with 语句中使用 psycopg2 执行多个 SQL 查询

是否可以使用 psycopg2 在双游标打开语句中传递多个查询with(首先打开连接,然后游标)?

例如替换:

import psycopg2

def connector():
    return psycopg2.connect(**DB_DICT_PARAMS)

########

sql_update1 = ("UPDATE table SET array = %s::varchar[], "
               "array_created = true, timestamp = now() AT TIME ZONE 'UTC' "
               "WHERE id = %s")

sql_update2 = ("UPDATE table SET json_field = %s "
               "WHERE id = %s")

with connector() as conn:
    with conn.cursor() as curs:
        curs.execute(sql_update1, [stringArray, ID])

with connector() as conn:
    with conn.cursor() as curs:
        curs.execute(sql_update2, [jsonString, ID])
Run Code Online (Sandbox Code Playgroud)

经过:

#(...)

sql_update1 = ("UPDATE table SET array …
Run Code Online (Sandbox Code Playgroud)

postgresql psycopg2 python-3.x database-cursor

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

pgadmin4 docker 无法转储服务器配置;没有名为“flask”的模块

我正在尝试使用dpage/pgadmin4:latest位于此处的 docker 映像:https ://hub.docker.com/r/dpage/pgadmin4/

\n

但是当我尝试从 docker 容器内转储服务器设置时,我遇到了困难。

\n

这是一个可重现的代码:

\n

docker-compose.yml:

\n
version: \'3.8\'\nservices:\n  pgadmin4:\n    image: dpage/pgadmin4\n    container_name: pgadmin4\n    environment:\n      - PGADMIN_DEFAULT_EMAIL=postgres@localhost\n      - PGADMIN_DEFAULT_PASSWORD="K%)*r7K~57Kcnw"\n      - PGADMIN_LISTEN_PORT=8080\n    ports:\n      - "8080:8080"\n    restart: unless-stopped\n    network_mode: host\n
Run Code Online (Sandbox Code Playgroud)\n
docker-compose pull && docker-compose up --build -d\n
Run Code Online (Sandbox Code Playgroud)\n

然后从 http://localhost:8080 的 Web 界面设置一些服务器连接,并尝试从容器内部转储它们:

\n
version: \'3.8\'\nservices:\n  pgadmin4:\n    image: dpage/pgadmin4\n    container_name: pgadmin4\n    environment:\n      - PGADMIN_DEFAULT_EMAIL=postgres@localhost\n      - PGADMIN_DEFAULT_PASSWORD="K%)*r7K~57Kcnw"\n      - PGADMIN_LISTEN_PORT=8080\n    ports:\n      - "8080:8080"\n    restart: unless-stopped\n    network_mode: host\n
Run Code Online (Sandbox Code Playgroud)\n

然后:

\n
docker-compose pull && …
Run Code Online (Sandbox Code Playgroud)

python flask docker docker-compose pgadmin-4

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

我应该以非 root 用户身份安装 Python 包还是设置虚拟环境以将它们安装在 Docker 容器内?

通过pip在 Dockerfile 中安装 Python 包时,例如:

pip install --trusted-host pypi.python.org -r requirements.txt
Run Code Online (Sandbox Code Playgroud)

requirements.txt,例如:

python-dotenv>=0.15.0
psycopg2>=2.8.6
sqlalchemy>=1.3.22
numpy>=1.19.0
rasterio>=1.1.8
pandas>=1.1.5
geopandas>=0.8.1
matplotlib>=3.3.0
seaborn>=0.11.0
Run Code Online (Sandbox Code Playgroud)

我最近看到这个警告:

WARNING: Running pip as the 'root' user can result in broken permissions
and conflicting behavior with the system package manager.
It is recommended to use a virtual environment
instead: https://pip.pypa.io/warnings/venv
Run Code Online (Sandbox Code Playgroud)

因此,我提出了一个“天真的”问题:
像人们通常在本地计算机上所做的那样,以非 root 用户身份(这是 Docker 中的默认设置)设置虚拟环境/或安装 Python 包是否有意义?
目前我从来不关心这一点,因为我位于一个 Docker 容器内,根据定义,该容器托管一个应用程序,所以我认为这些包全局安装是完全可以的。希望我不会破坏本地机器上的任何东西。

python pip docker

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

Pandas DataFrame.to_sql() 不再使用 sqlalchemy 2.0.1 engine.connect() 作为上下文管理器,并且不会抛出任何错误

这段带有pandas 1.5.3sqlalchemy 的 2.0.1代码不再工作,令人惊讶的是,它不会引发任何错误,代码默默地通过:

# python 3.10.6
import pandas as pd # 1.5.3
import psycopg2 # '2.9.5 (dt dec pq3 ext lo64)'
from sqlalchemy import create_engine # 2.0.1


def connector():
    return psycopg2.connect(**DB_PARAMS)

engine = create_engine('postgresql+psycopg2://', creator=connector)

with engine.connect() as connection:
    df.to_sql(
        name='my_table',
        con=connection,
        if_exists='replace',
        index=False,
    )
Run Code Online (Sandbox Code Playgroud)

目前,使用 sqlalchemy,2.0.1我的表不再填充 DataFrame 内容。

而它已正确填充 sqlalchemy version 1.4.45

编辑

显然,当我使用上下文管理器时它会起作用:

connection = engine.connect()

res.to_sql(
    name='my_table',
    con=connection,
    if_exists='replace',
    index=False
)
Out[2]: 133 # <- wondering what …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy psycopg2 contextmanager pandas

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

查找到节点的连接边数以及具有最大连接边的节点

在图中,如何找到与节点相连(直接绑定)的边数?
然后,这将是微不足道的,但如果有任何直接方法来找到具有最大边连接的唯一节点,那就太好了。
我正在使用 Python 2.7 和 Networkx。

到目前为止,我正在这样做:

sG            = list(nx.connected_component_subgraphs(G)) # sG is a sub_graph of main graph G
nb_sG         = len(sub_graphs)
max_con_node  = list()
for m in xrange(nb_sG):
    sG_nodes      = [(node, len(sG[m].edges(node)), sG[m].edges(node)) for node in sG[m].nodes()]
    connexions    = [i[1] for i in sG_nodes]
    idx           = [i for i,x in enumerate(connexions) if x==max(connexions)]
    max_con_node.append((max(connexions), [sG_nodes[i][0] for i in idx]))
Run Code Online (Sandbox Code Playgroud)

谢谢。

python networkx

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

初始化的空numpy数组实际上不是空的(包含零)

为了在numpy.ndarray中存储许多3D点坐标元组,我在为每个特征输入循环之前初始化一个空的numpy数组.

为此,我目前在进入循环之前执行此操作:

import numpy as np
pointsarrray = np.empty((1,3))
Run Code Online (Sandbox Code Playgroud)

但这会产生一个几乎为空的数组:

array([[  5.30498948e-315,   0.00000000e+000,   7.81250000e-003]])
Run Code Online (Sandbox Code Playgroud)

在填充pointsarray我的循环之后,我这样做:

pointsarray = np.vstack((pointsarray, [np.array(myPoint)]))
Run Code Online (Sandbox Code Playgroud)

(它也适用于np.append)

我最后需要在退出循环后删除数组的第一行,因为第一行总是包含初始化步骤中的值!

这不是什么大问题,但我想知道是否有一种更清洁的方法来实现一个真正空的阵列,我的意思是; 里面什么都没有(它显示了一行,我无法弄清楚为什么)但是在正确的尺寸?

python arrays numpy

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