Я пытаюсь читать или писать с / на прокси AWS RDS с postgres RDS в качестве конечной точки. Операция работает с psql, но не работает на том же клиенте с pg8000 или psycopg2, что и клиентские библиотеки в Python.
Операция работает с pg8000 и psycopg2, если я использую RDS напрямую в качестве конечной точки (без прокси RDS).
Сообщение об ошибке sqlaclchemy / psycopg2:
Feature not supported: RDS Proxy currently doesn’t support command-line options.
Минимальная версия кода, который я использую:
from sqlalchemy import create_engine
import os
from dotenv import load_dotenv
load_dotenv()
login_string = os.environ['login_string_proxy']
engine = create_engine(login_string, client_encoding="utf8", echo=True, connect_args={'options': '-csearch_path={}'.format("testing")})
engine.execute(f"INSERT INTO testing.mytable (product) VALUES ('123')")
pg8000: место остановки / ожидания чего-либо находится в core.py:
def sock_read(b):
try:
return self._sock.read(b)
except OSError as e:
raise InterfaceError("network error on read") from e
Минимальная версия кода, который я использую:
import pg8000
import os
from dotenv import load_dotenv
load_dotenv()
db_connection = pg8000.connect(database=os.environ['database'], host=os.environ['host'], port=os.environ['port'], user=os.environ['user'], password=os.environ['password'])
db_connection.run(f"INSERT INTO mytable (data) VALUES ('data')")
db_connection.commit()
db_connection.close()
Журналы в прокси-сервере RDS всегда выглядят нормально для всех упомянутых мною примеров, например:
A new client connected from ...:60614.
Received Startup Message: [username="", database="", protocolMajorVersion=3, protocolMinorVersion=0, sslEnabled=false]
Proxy authentication with PostgreSQL native password authentication succeeded for user "" with TLS off.
A TCP connection was established from the proxy at ...:42795 to the database at ...:5432.
The new database connection successfully authenticated with TLS off.
Я открыл все порты через группы безопасности на RDS и прокси RDS, и я использовал EC2 внутри VPC.
Я пробовал включать и выключать автокоммит.
connect_args
? Можете ли вы проверить без этого? - person Marcin   schedule 24.04.2021