小编Eel*_*iet的帖子

python multiprocessing + peewee + postgresql 因 SSL 错误而失败

我正在尝试编写一个 Python 模型,该模型能够使用多线程模块和 peewee 在 PostgreSQL 数据库中进行一些处理。

但是,在单核模式下,代码可以工作,但是,当我尝试使用多核运行代码时,我遇到了 SSL 错误。

我想发布我的模型的结构,希望有人可以建议如何以适当的方式设置我的模型。目前,我选择使用面向对象的方法,在该方法中我建立一个在池中共享的连接。为了澄清我所做的,我现在将展示我目前拥有的源代码

我有三个文件:main.py、models.py 和 parser.py。内容如下

models.py 定义了 peewee postgresql 表并连接到 postgres 服务器

import peewee as pw
from playhouse.pool import PooledPostgresqlExtDatabase

KVK_KEY = "id_number"
NAME_KEY = "name"
N_VOWELS_KEY = "n_vowels"

# initialise the data base
database = PooledPostgresqlExtDatabase(
    "testdb", user="postgres", host="localhost", port=5432, password="xxxx",
    max_connections=8, stale_timeout=300 )


class BaseModel(pw.Model):
    class Meta:
        database = database
        only_save_dirty = True


# this class describes the format of the sql data base
class Company(BaseModel):
    id_number = pw.IntegerField(primary_key=True) …
Run Code Online (Sandbox Code Playgroud)

python postgresql multiprocessing python-3.x peewee

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

在多索引数据中插入一行

我有一个多索引数据框(行上的multindex),我想在某个行号处插入一行。之前已经提出过这个问题(如何在Pandas多索引数据框中插入一行?),但是我有一个不同的问题想解决

事实上。我解决了它,但是它太难看了,我想问一问是否有更好的方法来做到这一点。

由于熊猫中没有insert_row函数,因此我想通过以下方式插入行:首先将我的数据帧最多复制到特定行,然后使用切片将其复制到新帧,然后附加要插入的行,然后附加其余原始数据帧。实际上,这种方法有效。这是一个例子

首先,我创建一个空的数据框

pipeinfo_index = pd.MultiIndex.from_tuples([tuple([None, None])], names=["Label", "Side"])
pipeinfoDF = pd.DataFrame(index=pipeinfo_index, columns=[])
pipeinfoDF.drop(np.nan, level='Label', inplace=True)
for i in range(4):
    label = "label{}".format(i)
    pipeinfoDF.ix[(label, "A"),"COL1"] = i
    pipeinfoDF.ix[(label, "B"),"COL1"] = 2*i+1
Run Code Online (Sandbox Code Playgroud)

看起来像

             COL1
Label  Side      
label0 A        0
       B        1
label1 A        1
       B        3
label2 A        2
       B        5
label3 A        3
Run Code Online (Sandbox Code Playgroud)

我想在label1和label2之间添加一行,以便得到一个新的数据框,例如

             COL1
Label  Side      
label0 A        0
       B        1
label1 A        1
       B        3
oker5  A        10
       B        30
label2 A        2 …
Run Code Online (Sandbox Code Playgroud)

python insert pandas

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