testcontainers / testcontainers/testcontainers-python
Use SqlServerContainer with pyodbc driver
Personne n'a encore pris cette issue.
- Langage dominant
- Python
- Étoiles
- 2.3k
- Forks
- 386
- Merge moyen
- 4 h 40 min
- PR mergées (30 j)
- 1
Description
In https://github.com/testcontainers/testcontainers-python/commit/fc5f2df4ba8157d21ecbf3a9a90cd45a61049f90#diff-313a71bf8d0b95ccd84a98f198294e10a7c7086c527efb513d9c6619a12086ee the default driver of SqlServerContainer was changed to pymssql.
Currently, I use the pyodbc driver to communicate with MSSQL databases. This is not possible anymore since then. I've tried
test_container = SqlServerContainer(
image="mcr.microsoft.com/mssql/server:2017-latest",
dialect="mssql+pyodbc",
)
which leads to a timeout
testcontainers.core.exceptions.TimeoutException: Wait time (120s) exceeded for _connect(args: (), kwargs {}). Exception: (pyodbc.InterfaceError) ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found and no default driver specified (0) (SQLDriverConnect)')
Alternatively, I've tried to specify the driver
test_container = SqlServerContainer(
image="mcr.microsoft.com/mssql/server:2017-latest",
dialect="mssql+pyodbc",
driver = "ODBC Driver 17 for SQL Server"
)
but this keyword isn't allowed anymore.
> raise create_unexpected_kwargs_error('run', kwargs)
E TypeError: run() got an unexpected keyword argument 'driver'
Is it still the goal of testcontainers to support using the pyodbc driver? If so, I might be motivated to support a little bit making this possible again in 3.6.x versions.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par examiner le diff du commit lié ainsi que le constructeur actuel de SqlServerContainer et la configuration de la connexion. Reproduisez les exemples pyodbc et suivez la manière dont les arguments de dialecte et de pilote sont traités ; le travail est terminé lorsqu’un SqlServerContainer peut se connecter avec pyodbc et un pilote ODBC sélectionné explicitement.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- python, sql
- Domaine
- databases
- Type d'issue
- Fonctionnalité
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100