Testcontainers Postgresql模拟不起作用

问题描述

我需要模拟postgresql数据库,经过研究后,我决定使用 Tescontainers-Python
pip安装了Testcontainer i n python3.6 之后,我发现开始的初始代码很简单,因为它可以是:

from testcontainers.postgres import PostgresContainer

postgres_container = PostgresContainer("postgres:9.5")
postgres_container.start()
sql_url = postgres_container.get_connection_url()

Python 3.8也是如此,在Windows 10或Ubuntu下,我总是收到相同的错误消息,我丢失了什么吗?

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py",line 672,in urlopen
    chunked=chunked,File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py",line 387,in _make_request
    conn.request(method,url,**httplib_request_kw)
  File "/usr/lib/python3.6/http/client.py",line 1287,in request
    self._send_request(method,body,headers,encode_chunked)
  File "/usr/lib/python3.6/http/client.py",line 1333,in _send_request
    self.endheaders(body,encode_chunked=encode_chunked)
  File "/usr/lib/python3.6/http/client.py",line 1282,in endheaders
    self._send_output(message_body,line 1042,in _send_output
    self.send(msg)
  File "/usr/lib/python3.6/http/client.py",line 980,in send
    self.connect()
  File "/usr/local/lib/python3.6/dist-packages/docker/transport/unixconn.py",line 43,in connect
    sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/requests/adapters.py",line 449,in send
    timeout=timeout
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py",line 720,in urlopen
    method,error=e,_pool=self,_stacktrace=sys.exc_info()[2]
  File "/usr/lib/python3/dist-packages/urllib3/util/retry.py",line 400,in increment
    raise six.reraise(type(error),error,_stacktrace)
  File "/usr/lib/python3/dist-packages/six.py",line 702,in reraise
    raise value.with_traceback(tb)
  File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py",in connect
    sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: ('Connection aborted.',FileNotFoundError(2,'No such file or directory'))

During handling of the above exception,another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py",line 205,in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
  File "/usr/local/lib/python3.6/dist-packages/docker/api/daemon.py",line 181,in version
    return self._result(self._get(url),json=True)
  File "/usr/local/lib/python3.6/dist-packages/docker/utils/decorators.py",line 46,in inner
    return f(self,*args,**kwargs)
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py",line 228,in _get
    return self.get(url,**self._set_request_timeout(kwargs))
  File "/usr/lib/python3/dist-packages/requests/sessions.py",line 546,in get
    return self.request('GET',**kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py",line 533,in request
    resp = self.send(prep,**send_kwargs)
  File "/usr/lib/python3/dist-packages/requests/sessions.py",line 646,in send
    r = adapter.send(request,**kwargs)
  File "/usr/lib/python3/dist-packages/requests/adapters.py",line 498,in send
    raise ConnectionError(err,request=request)
requests.exceptions.ConnectionError: ('Connection aborted.',another exception occurred:

Traceback (most recent call last):
  File "***.py",line 4,in <module>
    postgres_container = PostgresContainer("postgres:9.5")
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/postgres.py",line 36,in __init__
    super(PostgresContainer,self).__init__(image=image)
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/generic.py",line 21,in __init__
    super(DbContainer,self).__init__(image)
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/container.py",line 16,in __init__
    self._docker = DockerClient()
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/docker_client.py",line 23,in __init__
    self.client = docker.from_env()
  File "/usr/local/lib/python3.6/dist-packages/docker/client.py",line 85,in from_env
    timeout=timeout,version=version,**kwargs_from_env(**kwargs)
  File "/usr/local/lib/python3.6/dist-packages/docker/client.py",line 40,in __init__
    self.api = apiclient(*args,line 188,in __init__
    self._version = self._retrieve_server_version()
  File "/usr/local/lib/python3.6/dist-packages/docker/api/client.py",line 213,in _retrieve_server_version
    'Error while fetching server API version: {0}'.format(e)
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.','No such file or directory'))
Exception ignored in: <bound method DockerContainer.__del__ of <testcontainers.postgres.PostgresContainer object at 0x7ff612c65390>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/testcontainers/core/container.py",line 73,in __del__
AttributeError: 'PostgresContainer' object has no attribute '_container'

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)