相关疑难解决方法(0)

SQLAlchemy和多个进程的连接问题

我在一个项目中使用PostgreSQL和SQLAlchemy,该项目包含一个启动子进程的主进程.所有这些进程都通过SQLAlchemy访问数据库.

我遇到了可重复的连接失败:前几个子进程正常工作,但一段时间后出现连接错误.这是一个MWCE:

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, create_engine
from sqlalchemy.orm import sessionmaker

DB_URL = 'postgresql://user:password@localhost/database'

Base = declarative_base()

class Dummy(Base):
    __tablename__ = 'dummies'
    id = Column(Integer, primary_key=True)
    value = Column(Integer)

engine = None
Session = None
session = None

def init():
    global engine, Session, session
    engine = create_engine(DB_URL)
    Base.metadata.create_all(engine)
    Session = sessionmaker(bind=engine)
    session = Session()

def cleanup():
    session.close()
    engine.dispose()

def target(id):
    init()
    try:
        dummy = session.query(Dummy).get(id)
        dummy.value += 1
        session.add(dummy)
        session.commit()
    finally:
        cleanup()

def main():
    init() …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy multiprocessing

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

Python:从Thread调用时解密失败或错误记录mac

我在这个代码片段中遇到"解密失败或错误记录mac"错误:

conn = psycopg2.connect(...)
cursor = conn.cursor()
cursor.execute("SELECT id, ip FROM schema.table;")
rows = cursor.fetchall()
cursor.close()
conn.commit()
conn.close()
Run Code Online (Sandbox Code Playgroud)

这在Thread的run()方法中调用,在while(True)循环中多次调用.我只是使用psycopg2驱动程序打开与PostgreSQL数据库的连接.

在Python中打开数据线连接到线程的安全性是什么?我不知道是什么引起了这个错误.

python encryption postgresql multithreading database-connection

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

在Python中跨进程共享与postgres数据库的连接

我有一个作为守护进程运行的Python脚本.在启动时,它会生成5个进程,每个进程都连接到Postgres数据库.现在,为了减少数据库连接的数量(最终会变得非常大),我试图找到一种跨多个进程共享单个连接的方法.为此我正在寻找multiprocessing.sharedctypes.ValueAPI.但是,我不确定如何psycopg2.connection跨进程使用此API 传递对象.谁能告诉我怎么做?

我也愿意接受其他想法以解决这个问题.

我没有考虑将连接作为构造函数的一部分传递给5个进程的原因是互斥处理.如果我遵循这种方法,我不确定如何防止多个进程访问连接.谁能告诉我这是否是正确的做法?

python postgresql psycopg2 python-multiprocessing

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