You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm using testcontainers-postgres==0.0.1rc1 combined with Flask-SQLAlchemy==3.1.1 and I have a somewhat complicated query that uses jsonb_array_elements. The query works fine when i run the code, but my tests fail with the following error message:
def do_execute(self, cursor, statement, parameters, context=None):
> cursor.execute(statement, parameters)
E psycopg2.errors.UndefinedFunction: function jsonb_array_elements(json) does not exist
E LINE 4: FROM jsonb_array_elements(invoice.invoice.current_attributes...
E ^
E HINT: No function matches the given name and argument types. You might need to add explicit type casts.
Therefore, I'm wondering whether there's a way to instrument how I interact with testcontainers so that I'm able to use jsonb_array_elements
Where are you trying to do it?
Provide a self-contained code snippet that illustrates the bug or unexpected behavior.
Ideally, include a link to a public repository with a minimal project where someone from the
testcontainers-python can submit a PR with a solution to the problem you are facing with the library.
I don't have an example on a public repo, but I can paste parts of the query below:
and this is how i'm instrumenting testcontainers for all my tests:
import os
from unittest import TestCase
from urllib.parse import urlparse
import psycopg2
from sqlalchemy.orm import sessionmaker, scoped_session
from testcontainers.postgres import PostgresContainer
from app import create_app, db
class BaseRepositoryTest(TestCase):
_postgres = PostgresContainer("postgres:15")
@classmethod
def setUpClass(cls):
cls._postgres.start()
cls.create_schemas(cls._postgres)
os.environ["DATABASE_URL"] = cls._postgres.get_connection_url(cls._postgres.get_container_host_ip())
cls.app = create_app("testing")
cls.app_context = cls.app.app_context()
cls.app_context.push()
db.create_all()
@classmethod
def tearDownClass(cls):
db.drop_all()
cls.app_context.pop()
cls._postgres.stop()
@classmethod
def create_schemas(cls, postgres: PostgresContainer):
url = urlparse(postgres.get_connection_url())
dbname = url.path.lstrip("/")
user = url.username
password = url.password
host = url.hostname
port = url.port
connection = psycopg2.connect(
dbname=dbname,
user=user,
password=password,
host=host,
port=port,
)
with connection.cursor() as cur:
cur.execute("create schema my_schema;")
connection.commit()
def setUp(self):
# Explicitly create a new connection and transaction
self.connection = db.engine.connect()
self.transaction = self.connection.begin()
# Use sessionmaker to bind the session configuration to the connection
session_factory = sessionmaker(bind=self.connection)
self.session = scoped_session(session_factory)
# Temporarily replace the session in use by the db object
db.session = self.session
def tearDown(self):
# Ensure the database is emptied after tests
self.transaction.rollback()
db.session.remove()
Runtime environment
Provide a summary of your runtime environment. Which operating system, python version, and docker version are you using?
What is the version of testcontainers-python you are using? You can run the following commands to get the relevant information.
Paste the results of the bash below
uname -a
echo"------"
docker info
echo"------"
poetry run python --version
echo"------"
poetry show --tree
Darwin felipes-macbook-pro.home 23.6.0 Darwin Kernel Version 23.6.0: Mon Jul 29 21:14:30 PDT 2024; root:xnu-10063.141.2~1/RELEASE_ARM64_T6030 arm64
------
Client:
Version: 27.4.0
Context: desktop-linux
Debug Mode: false
Plugins:
ai: Ask Gordon - Docker Agent (Docker Inc.)
Version: v0.5.1
Path: /Users/felipe/.docker/cli-plugins/docker-ai
buildx: Docker Buildx (Docker Inc.)
Version: v0.19.2-desktop.1
Path: /Users/felipe/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.31.0-desktop.2
Path: /Users/felipe/.docker/cli-plugins/docker-compose
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.37
Path: /Users/felipe/.docker/cli-plugins/docker-debug
desktop: Docker Desktop commands (Beta) (Docker Inc.)
Version: v0.1.0
Path: /Users/felipe/.docker/cli-plugins/docker-desktop
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.2
Path: /Users/felipe/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.27
Path: /Users/felipe/.docker/cli-plugins/docker-extension
feedback: Provide feedback, right in your terminal! (Docker Inc.)
Version: v1.0.5
Path: /Users/felipe/.docker/cli-plugins/docker-feedback
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.4.0
Path: /Users/felipe/.docker/cli-plugins/docker-init
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/felipe/.docker/cli-plugins/docker-sbom
scout: Docker Scout (Docker Inc.)
Version: v1.15.1
Path: /Users/felipe/.docker/cli-plugins/docker-scout
Server:
Containers: 106
Running: 2
Paused: 0
Stopped: 104
Images: 6
Server Version: 27.4.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Swarm: inactive
Runtimes: runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: 472731909fa34bd7bc9c087e4c27943f9835f111
runc version: v1.1.13-0-g58aa920
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
cgroupns
Kernel Version: 6.10.14-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: aarch64
CPUs: 11
Total Memory: 7.653GiB
Name: docker-desktop
ID: 3b4683d1-31f6-498c-8fd1-1f5f722d431e
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=unix:///Users/felipe/Library/Containers/com.docker.docker/Data/docker-cli.sock
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: daemon is not using the default seccomp profile
------
[tool.poetry] section not found in /Users/felipe/code/autonifai/autonifai-backend/pyproject.toml
------
The text was updated successfully, but these errors were encountered:
What are you trying to do?
I'm using
testcontainers-postgres==0.0.1rc1
combined withFlask-SQLAlchemy==3.1.1
and I have a somewhat complicated query that usesjsonb_array_elements
. The query works fine when i run the code, but my tests fail with the following error message:Therefore, I'm wondering whether there's a way to instrument how I interact with testcontainers so that I'm able to use
jsonb_array_elements
Where are you trying to do it?
Provide a self-contained code snippet that illustrates the bug or unexpected behavior.
Ideally, include a link to a public repository with a minimal project where someone from the
testcontainers-python can submit a PR with a solution to the problem you are facing with the library.
I don't have an example on a public repo, but I can paste parts of the query below:
and this is how i'm instrumenting testcontainers for all my tests:
Runtime environment
Provide a summary of your runtime environment. Which operating system, python version, and docker version are you using?
What is the version of
testcontainers-python
you are using? You can run the following commands to get the relevant information.Paste the results of the bash below
The text was updated successfully, but these errors were encountered: