Skip to content

Commit cd6f75f

Browse files
committed
Replace pymmsql with pyodbc. This will probably break because the driver isn't installed on Travis.
1 parent 8caef2f commit cd6f75f

File tree

7 files changed

+16
-7
lines changed

7 files changed

+16
-7
lines changed

.travis.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ services:
77

88
addons:
99
chrome: "stable"
10+
apt:
11+
packages:
12+
- unixodbc-dev # required for pyodbc
1013

1114
language: python
1215
python:

requirements/3.5.txt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ mccabe==0.6.1 # via flake8
3838
more-itertools==8.2.0 # via pytest
3939
packaging==20.1 # via pytest
4040
paramiko==2.7.1 # via docker
41+
pathlib2==2.3.5 # via pytest
4142
pluggy==0.13.1 # via pytest
4243
protobuf==3.11.3 # via google-api-core, googleapis-common-protos
4344
psycopg2-binary==2.8.4 # via testcontainers
@@ -48,9 +49,9 @@ pycodestyle==2.5.0 # via flake8
4849
pycparser==2.19 # via cffi
4950
pyflakes==2.1.1 # via flake8
5051
pymongo==3.10.1 # via testcontainers
51-
pymssql==2.1.4 # via testcontainers
5252
pymysql==0.9.3 # via testcontainers
5353
pynacl==1.3.0 # via paramiko
54+
pyodbc==4.0.30 # via testcontainers
5455
pyparsing==2.4.6 # via packaging
5556
pyrsistent==0.15.7 # via jsonschema
5657
pytest-cov==2.8.1 # via -r requirements.in
@@ -61,7 +62,7 @@ redis==3.4.1 # via testcontainers
6162
requests==2.23.0 # via codecov, docker, docker-compose, google-api-core
6263
rsa==4.0 # via google-auth
6364
selenium==3.141.0 # via testcontainers
64-
six==1.14.0 # via bcrypt, cryptography, docker, docker-compose, dockerpty, google-api-core, google-auth, grpcio, jsonschema, packaging, protobuf, pynacl, pyrsistent, websocket-client
65+
six==1.14.0 # via bcrypt, cryptography, docker, docker-compose, dockerpty, google-api-core, google-auth, grpcio, jsonschema, packaging, pathlib2, protobuf, pynacl, pyrsistent, websocket-client
6566
sqlalchemy==1.3.13 # via testcontainers
6667
texttable==1.6.2 # via docker-compose
6768
urllib3==1.25.8 # via requests, selenium

requirements/3.6.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ pycodestyle==2.5.0 # via flake8
4848
pycparser==2.19 # via cffi
4949
pyflakes==2.1.1 # via flake8
5050
pymongo==3.10.1 # via testcontainers
51-
pymssql==2.1.4 # via testcontainers
5251
pymysql==0.9.3 # via testcontainers
5352
pynacl==1.3.0 # via paramiko
53+
pyodbc==4.0.30 # via testcontainers
5454
pyparsing==2.4.6 # via packaging
5555
pyrsistent==0.15.7 # via jsonschema
5656
pytest-cov==2.8.1 # via -r requirements.in

requirements/3.7.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ pycodestyle==2.5.0 # via flake8
4848
pycparser==2.19 # via cffi
4949
pyflakes==2.1.1 # via flake8
5050
pymongo==3.10.1 # via testcontainers
51-
pymssql==2.1.4 # via testcontainers
5251
pymysql==0.9.3 # via testcontainers
5352
pynacl==1.3.0 # via paramiko
53+
pyodbc==4.0.30 # via testcontainers
5454
pyparsing==2.4.6 # via packaging
5555
pyrsistent==0.15.7 # via jsonschema
5656
pytest-cov==2.8.1 # via -r requirements.in

requirements/3.8.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,9 @@ pycodestyle==2.5.0 # via flake8
4747
pycparser==2.19 # via cffi
4848
pyflakes==2.1.1 # via flake8
4949
pymongo==3.10.1 # via testcontainers
50-
pymssql==2.1.4 # via testcontainers
5150
pymysql==0.9.3 # via testcontainers
5251
pynacl==1.3.0 # via paramiko
52+
pyodbc==4.0.30 # via testcontainers
5353
pyparsing==2.4.6 # via packaging
5454
pyrsistent==0.15.7 # via jsonschema
5555
pytest-cov==2.8.1 # via -r requirements.in

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
'google-cloud-pubsub': ['google-cloud-pubsub'],
5757
'mongo': ['pymongo'],
5858
'redis': ['redis'],
59-
'mssqlserver': ['pymssql']
59+
'mssqlserver': ['pyodbc']
6060
},
6161
long_description_content_type="text/markdown",
6262
long_description=long_description,

testcontainers/mssql.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ class SqlServerContainer(DbContainer):
77
SQLSERVER_PASSWORD = environ.get("SQLSERVER_PASSWORD", "1Secure*Password1")
88
SQLSERVER_USER = "SA"
99
SQLSERVER_DBNAME = "tempdb"
10+
SQLSERVER_DRIVER = "ODBC Driver 17 for SQL Server"
1011

1112
def __init__(self, image="mcr.microsoft.com/mssql/server:2019-latest", **kwargs):
1213
super(SqlServerContainer, self).__init__(image)
@@ -21,6 +22,8 @@ def __init__(self, image="mcr.microsoft.com/mssql/server:2019-latest", **kwargs)
2122
self.SQLSERVER_USER = kwargs['SQLSERVER_USER']
2223
if 'SQLSERVER_DBNAME' in kwargs:
2324
self.SQLSERVER_DBNAME = kwargs['SQLSERVER_DBNAME']
25+
if 'SQLSERVER_DRIVER' in kwargs:
26+
self.SQLSERVER_DRIVER = kwargs['SQLSERVER_DRIVER']
2427

2528
def _configure(self):
2629
self.with_env("SA_PASSWORD", self.SQLSERVER_PASSWORD)
@@ -30,8 +33,10 @@ def _configure(self):
3033
self.with_env("MSSQL_PID", self.MSSQL_PID)
3134

3235
def get_connection_url(self):
33-
return super()._create_connection_url(dialect="mssql+pymssql",
36+
standard_url = super()._create_connection_url(dialect="mssql+pyodbc",
3437
username=self.SQLSERVER_USER,
3538
password=self.SQLSERVER_PASSWORD,
3639
db_name=self.SQLSERVER_DBNAME,
3740
port=self.port_to_expose)
41+
42+
return standard_url + f"?driver={self.SQLSERVER_DRIVER}"

0 commit comments

Comments
 (0)