コード例 #1
0
 def test_pyodbc_connect_dsn_extra(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql://*****:*****@mydsn/?LANGUAGE=us_" "english&foo=bar")
     connection = dialect.create_connect_args(u)
     dsn_string = connection[0][0]
     assert ";LANGUAGE=us_english" in dsn_string
     assert ";foo=bar" in dsn_string
コード例 #2
0
ファイル: test_engine.py プロジェクト: nakagami/sqlalchemy
    def test_pyodbc_disconnect(self):
        dialect = pyodbc.dialect()

        class MockDBAPIError(Exception):
            pass

        class MockProgrammingError(MockDBAPIError):
            pass

        dialect.dbapi = Mock(
            Error=MockDBAPIError, ProgrammingError=MockProgrammingError)

        for error in [
            MockDBAPIError("[%s] some pyodbc message" % code)
            for code in [
                '08S01', '01002', '08003', '08007',
                '08S02', '08001', 'HYT00', 'HY010']
        ] + [
            MockProgrammingError(message)
            for message in [
                "(some pyodbc stuff) The cursor's connection has been closed.",
                "(some pyodbc stuff) Attempt to use a closed connection."
            ]
        ]:
            eq_(dialect.is_disconnect(error, None, None), True)

        eq_(dialect.is_disconnect(
            MockProgrammingError("not an error"), None, None), False)
コード例 #3
0
 def test_pyodbc_odbc_connect_with_dsn(self):
     dialect = pyodbc.dialect()
     u = url.make_url(
         "mssql:///?odbc_connect=dsn%3Dmydsn%3BDatabase" "%3Ddatabase%3BUID%3Dusername%3BPWD%3Dpassword"
     )
     connection = dialect.create_connect_args(u)
     eq_([["dsn=mydsn;Database=database;UID=username;PWD=password"], {}], connection)
コード例 #4
0
ファイル: test_engine.py プロジェクト: monetate/sqlalchemy
    def test_pyodbc_host_no_driver(self):
        dialect = pyodbc.dialect()
        u = url.make_url("mssql://*****:*****@hostspec/database")

        def go():
            return dialect.create_connect_args(u)

        connection = assert_warnings(
            go,
            [
                "No driver name specified; this is expected by "
                "PyODBC when using DSN-less connections"
            ],
        )

        eq_(
            [
                [
                    "Server=hostspec;Database=database;UI"
                    "D=username;PWD=password"
                ],
                {},
            ],
            connection,
        )
コード例 #5
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_connect_comma_port(self):
     dialect = pyodbc.dialect()
     u = \
         url.make_url('mssql://*****:*****@hostspec:12345/data'
                      'base')
     connection = dialect.create_connect_args(u)
     eq_([['DRIVER={SQL Server};Server=hostspec,12345;Database=datab'
         'ase;UID=username;PWD=password'], {}], connection)
コード例 #6
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_connect_config_port(self):
     dialect = pyodbc.dialect()
     u = \
         url.make_url('mssql://*****:*****@hostspec/database?p'
                      'ort=12345')
     connection = dialect.create_connect_args(u)
     eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI'
         'D=username;PWD=password;port=12345'], {}], connection)
コード例 #7
0
ファイル: test_engine.py プロジェクト: anti-social/sqlalchemy
 def test_pyodbc_hostname(self):
     dialect = pyodbc.dialect()
     u = url.make_url(
         'mssql://*****:*****@hostspec/database?driver=SQL+Server'
     )
     connection = dialect.create_connect_args(u)
     eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI'
         'D=username;PWD=password'], {}], connection)
コード例 #8
0
 def test_pyodbc_connect_comma_port(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql://*****:*****@hostspec:12345/data" "base")
     connection = dialect.create_connect_args(u)
     eq_(
         [["DRIVER={SQL Server};Server=hostspec,12345;Database=datab" "ase;UID=username;PWD=password"], {}],
         connection,
     )
コード例 #9
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_odbc_connect(self):
     dialect = pyodbc.dialect()
     u = \
         url.make_url('mssql:///?odbc_connect=DRIVER%3D%7BSQL+Server'
                      '%7D%3BServer%3Dhostspec%3BDatabase%3Ddatabase'
                      '%3BUID%3Dusername%3BPWD%3Dpassword')
     connection = dialect.create_connect_args(u)
     eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI'
         'D=username;PWD=password'], {}], connection)
コード例 #10
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_odbc_connect_ignores_other_values(self):
     dialect = pyodbc.dialect()
     u = \
         url.make_url('mssql://*****:*****@localhost/dbdiff?od'
                      'bc_connect=DRIVER%3D%7BSQL+Server%7D%3BServer'
                      '%3Dhostspec%3BDatabase%3Ddatabase%3BUID%3Duse'
                      'rname%3BPWD%3Dpassword')
     connection = dialect.create_connect_args(u)
     eq_([['DRIVER={SQL Server};Server=hostspec;Database=database;UI'
         'D=username;PWD=password'], {}], connection)
コード例 #11
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_extra_connect(self):
     dialect = pyodbc.dialect()
     u = \
         url.make_url('mssql://*****:*****@hostspec/database?L'
                      'ANGUAGE=us_english&foo=bar')
     connection = dialect.create_connect_args(u)
     eq_(connection[1], {})
     eq_(connection[0][0]
         in ('DRIVER={SQL Server};Server=hostspec;Database=database;'
         'UID=username;PWD=password;foo=bar;LANGUAGE=us_english',
         'DRIVER={SQL Server};Server=hostspec;Database=database;UID='
         'username;PWD=password;LANGUAGE=us_english;foo=bar'), True)
コード例 #12
0
 def test_pyodbc_extra_connect(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql://*****:*****@hostspec/database?L" "ANGUAGE=us_english&foo=bar")
     connection = dialect.create_connect_args(u)
     eq_(connection[1], {})
     eq_(
         connection[0][0]
         in (
             "DRIVER={SQL Server};Server=hostspec;Database=database;"
             "UID=username;PWD=password;foo=bar;LANGUAGE=us_english",
             "DRIVER={SQL Server};Server=hostspec;Database=database;UID="
             "username;PWD=password;LANGUAGE=us_english;foo=bar",
         ),
         True,
     )
コード例 #13
0
ファイル: test_engine.py プロジェクト: monetate/sqlalchemy
 def test_pyodbc_connect_config_port(self):
     dialect = pyodbc.dialect()
     u = url.make_url(
         "mssql://*****:*****@hostspec/database?p"
         "ort=12345&driver=SQL+Server"
     )
     connection = dialect.create_connect_args(u)
     eq_(
         [
             [
                 "DRIVER={SQL Server};Server=hostspec;Database=database;UI"
                 "D=username;PWD=password;port=12345"
             ],
             {},
         ],
         connection,
     )
コード例 #14
0
 def test_pyodbc_odbc_connect_ignores_other_values(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql://*****:*****@localhost/dbdiff?od"
                      "bc_connect=DRIVER%3D%7BSQL+Server%7D%3BServer"
                      "%3Dhostspec%3BDatabase%3Ddatabase%3BUID%3Duse"
                      "rname%3BPWD%3Dpassword")
     connection = dialect.create_connect_args(u)
     eq_(
         [
             [
                 "DRIVER={SQL Server};Server=hostspec;Database=database;UI"
                 "D=username;PWD=password"
             ],
             {},
         ],
         connection,
     )
コード例 #15
0
    def test_dates(self, type_, args, kw, res, server_version,
                   use_type_descriptor, driver):
        "Exercise type specification for date types."

        if driver == "base":
            from sqlalchemy.dialects.mssql import base

            dialect = base.MSDialect()
        elif driver == "pyodbc":
            from sqlalchemy.dialects.mssql import pyodbc

            dialect = pyodbc.dialect()
        elif driver == "pymssql":
            from sqlalchemy.dialects.mssql import pymssql

            dialect = pymssql.dialect()
        else:
            assert False

        if server_version:
            dialect.server_version_info = server_version
        else:
            dialect.server_version_info = MS_2008_VERSION

        metadata = MetaData()

        typ = type_(*args, **kw)

        if use_type_descriptor:
            typ = dialect.type_descriptor(typ)

        col = Column("date_c", typ, nullable=None)

        date_table = Table("test_mssql_dates", metadata, col)
        gen = dialect.ddl_compiler(dialect, schema.CreateTable(date_table))

        testing.eq_(
            gen.get_column_specification(col),
            "%s %s" % (
                col.name,
                res,
            ),
        )

        self.assert_(repr(col))
コード例 #16
0
ファイル: test_engine.py プロジェクト: zimiao552147572/hue
 def test_pyodbc_extra_connect(self):
     dialect = pyodbc.dialect()
     u = url.make_url(
         "mssql://*****:*****@hostspec/database?L"
         "ANGUAGE=us_english&foo=bar&driver=SQL+Server"
     )
     connection = dialect.create_connect_args(u)
     eq_(connection[1], {})
     eq_(
         connection[0][0]
         in (
             "DRIVER={SQL Server};Server=hostspec;Database=database;"
             "UID=username;PWD=password;foo=bar;LANGUAGE=us_english",
             "DRIVER={SQL Server};Server=hostspec;Database=database;UID="
             "username;PWD=password;LANGUAGE=us_english;foo=bar",
         ),
         True,
     )
コード例 #17
0
ファイル: test_engine.py プロジェクト: zimiao552147572/hue
 def test_pyodbc_odbc_connect(self):
     dialect = pyodbc.dialect()
     u = url.make_url(
         "mssql:///?odbc_connect=DRIVER%3D%7BSQL+Server"
         "%7D%3BServer%3Dhostspec%3BDatabase%3Ddatabase"
         "%3BUID%3Dusername%3BPWD%3Dpassword"
     )
     connection = dialect.create_connect_args(u)
     eq_(
         [
             [
                 "DRIVER={SQL Server};Server=hostspec;Database=database;UI"
                 "D=username;PWD=password"
             ],
             {},
         ],
         connection,
     )
コード例 #18
0
    def test_pyodbc_token_injection(self):
        token1 = "someuser%3BPORT%3D50001"
        token2 = "some{strange}pw%3BPORT%3D50001"
        token3 = "somehost%3BPORT%3D50001"
        token4 = "somedb%3BPORT%3D50001"

        u = url.make_url("mssql+pyodbc://%s:%s@%s/%s?driver=foob" %
                         (token1, token2, token3, token4))
        dialect = pyodbc.dialect()
        connection = dialect.create_connect_args(u)
        eq_(
            (
                ("DRIVER={foob};Server=somehost%3BPORT%3D50001;"
                 "Database=somedb%3BPORT%3D50001;UID={someuser;PORT=50001};"
                 "PWD={some{strange}}pw;PORT=50001}", ),
                {},
            ),
            connection,
        )
コード例 #19
0
ファイル: test_engine.py プロジェクト: monetate/sqlalchemy
 def test_pyodbc_odbc_connect_ignores_other_values(self):
     dialect = pyodbc.dialect()
     u = url.make_url(
         "mssql://*****:*****@localhost/dbdiff?od"
         "bc_connect=DRIVER%3D%7BSQL+Server%7D%3BServer"
         "%3Dhostspec%3BDatabase%3Ddatabase%3BUID%3Duse"
         "rname%3BPWD%3Dpassword"
     )
     connection = dialect.create_connect_args(u)
     eq_(
         [
             [
                 "DRIVER={SQL Server};Server=hostspec;Database=database;UI"
                 "D=username;PWD=password"
             ],
             {},
         ],
         connection,
     )
コード例 #20
0
 def test_pyodbc_extra_connect_azure(self):
     # issue #5592
     dialect = pyodbc.dialect()
     u = url.make_url(
         "mssql+pyodbc://@server_name/db_name?"
         "driver=ODBC+Driver+17+for+SQL+Server;"
         "authentication=ActiveDirectoryIntegrated"
     )
     connection = dialect.create_connect_args(u)
     eq_(connection[1], {})
     eq_(
         connection[0][0]
         in (
             "DRIVER={ODBC Driver 17 for SQL Server};"
             "Server=server_name;Database=db_name;"
             "Authentication=ActiveDirectoryIntegrated",
         ),
         True,
     )
コード例 #21
0
    def test_pyodbc_disconnect(self):
        dialect = pyodbc.dialect()

        class MockDBAPIError(Exception):
            pass

        class MockProgrammingError(MockDBAPIError):
            pass

        dialect.dbapi = Mock(
            Error=MockDBAPIError, ProgrammingError=MockProgrammingError
        )

        for error in [
            MockDBAPIError(code, "[%s] some pyodbc message" % code)
            for code in [
                "08S01",
                "01002",
                "08003",
                "08007",
                "08S02",
                "08001",
                "HYT00",
                "HY010",
            ]
        ] + [
            MockProgrammingError(message)
            for message in [
                "(some pyodbc stuff) The cursor's connection has been closed.",
                "(some pyodbc stuff) Attempt to use a closed connection.",
            ]
        ]:
            eq_(dialect.is_disconnect(error, None, None), True)

        eq_(
            dialect.is_disconnect(
                MockProgrammingError("Query with abc08007def failed"),
                None,
                None,
            ),
            False,
        )
コード例 #22
0
ファイル: test_engine.py プロジェクト: anti-social/sqlalchemy
    def test_pyodbc_token_injection(self):
        token1 = "someuser%3BPORT%3D50001"
        token2 = "somepw%3BPORT%3D50001"
        token3 = "somehost%3BPORT%3D50001"
        token4 = "somedb%3BPORT%3D50001"

        u = url.make_url(
            'mssql+pyodbc://%s:%s@%s/%s?driver=foob' % (
                token1, token2, token3, token4
            )
        )
        dialect = pyodbc.dialect()
        connection = dialect.create_connect_args(u)
        eq_(
            [[
                "DRIVER={foob};Server=somehost%3BPORT%3D50001;"
                "Database=somedb%3BPORT%3D50001;UID='someuser;PORT=50001';"
                "PWD='somepw;PORT=50001'"], {}],
            connection
        )
コード例 #23
0
    def test_pyodbc_host_no_driver(self):
        dialect = pyodbc.dialect()
        u = url.make_url("mssql+pyodbc://username:password@hostspec/database")

        def go():
            return dialect.create_connect_args(u)

        connection = assert_warnings(
            go,
            [
                "No driver name specified; this is expected by "
                "PyODBC when using DSN-less connections"
            ],
        )

        eq_(
            (
                ("Server=hostspec;Database=database;UI"
                 "D=username;PWD=password", ),
                {},
            ),
            connection,
        )
コード例 #24
0
ファイル: test_engine.py プロジェクト: JacobHayes/sqlalchemy
    def test_pyodbc_empty_url_no_warning(self):
        dialect = pyodbc.dialect()
        u = url.make_url("mssql+pyodbc://")

        # no warning is emitted
        dialect.create_connect_args(u)
コード例 #25
0
ファイル: test_engine.py プロジェクト: JacobHayes/sqlalchemy
 def test_pyodbc_connect_dsn_non_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql://*****:*****@mydsn")
     connection = dialect.create_connect_args(u)
     eq_([["dsn=mydsn;UID=username;PWD=password"], {}], connection)
コード例 #26
0
ファイル: test_engine.py プロジェクト: JacobHayes/sqlalchemy
 def test_pyodbc_connect_old_style_dsn_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql:///?dsn=mydsn")
     connection = dialect.create_connect_args(u)
     eq_([["dsn=mydsn;Trusted_Connection=Yes"], {}], connection)
コード例 #27
0
 def test_pyodbc_connect_dsn_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql+pyodbc://mydsn")
     connection = dialect.create_connect_args(u)
     eq_((("dsn=mydsn;Trusted_Connection=Yes", ), {}), connection)
コード例 #28
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_connect_dsn_non_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url('mssql://*****:*****@mydsn')
     connection = dialect.create_connect_args(u)
     eq_([['dsn=mydsn;UID=username;PWD=password'], {}], connection)
コード例 #29
0
ファイル: test_engine.py プロジェクト: 23andMe/sqlalchemy
 def test_pyodbc_connect_old_style_dsn_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url('mssql:///?dsn=mydsn')
     connection = dialect.create_connect_args(u)
     eq_([['dsn=mydsn;Trusted_Connection=Yes'], {}], connection)
コード例 #30
0
ファイル: test_engine.py プロジェクト: lensoncheng/sqlalchemy
 def test_pyodbc_connect_dsn_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url('mssql://mydsn')
     connection = dialect.create_connect_args(u)
     eq_([['dsn=mydsn;Trusted_Connection=Yes'], {}], connection)
コード例 #31
0
ファイル: test_engine.py プロジェクト: monetate/sqlalchemy
 def test_pyodbc_connect_dsn_trusted(self):
     dialect = pyodbc.dialect()
     u = url.make_url("mssql://mydsn")
     connection = dialect.create_connect_args(u)
     eq_([["dsn=mydsn;Trusted_Connection=Yes"], {}], connection)