Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_exc_integrity(self):
"Make sure an IntegretyError is raised"
# This is really making sure we are properly encoding and comparing the SQLSTATEs.
self.cursor.execute("create table t1(s1 varchar(10) primary key)")
self.cursor.execute("insert into t1 values ('one')")
self.assertRaises(pyodbc.IntegrityError, self.cursor.execute, "insert into t1 values ('one')")
def test_exc_integrity(self):
"Make sure an IntegretyError is raised"
# This is really making sure we are properly encoding and comparing the SQLSTATEs.
self.cursor.execute("create table t1(s1 varchar(10) primary key)")
self.cursor.execute("insert into t1 values ('one')")
self.assertRaises(pyodbc.IntegrityError, self.cursor.execute, "insert into t1 values ('one')")
from pyodbc import IntegrityError
from assembl.models.auth import (
LanguagePreferenceOrder,
UserLanguagePreference
)
ulp = UserLanguagePreference(
user=admin_user,
locale=fr_locale,
preferred_order=0,
source_of_evidence=LanguagePreferenceOrder.Explicit.value)
test_session.add(ulp)
test_session.flush()
pytest.raises(IntegrityError)
def test_exc_integrity(self):
"Make sure an IntegretyError is raised"
# This is really making sure we are properly encoding and comparing the SQLSTATEs.
self.cursor.execute("create table t1(s1 varchar(10) primary key)")
self.cursor.execute("insert into t1 values ('one')")
self.assertRaises(pyodbc.IntegrityError, self.cursor.execute, "insert into t1 values ('one')")
import pyodbc as Database
version = tuple(map(int, Database.version.split('.')))
if version < (2,0,38) :
raise ImportError("pyodbc 2.0.38 or newer is required; you have %s" % Database.version)
except ImportError, e:
raise ImproperlyConfigured("Error loading pymssq/pyodbc modules: %s" % ex)
try:
# Only exists in Python 2.4+
from threading import local
except ImportError:
# Import copy of _thread_local.py from Python 2.4
from django.utils._threading_local import local
DatabaseError = Database.DatabaseError
IntegrityError = Database.IntegrityError
class DatabaseFeatures(BaseDatabaseFeatures):
allows_group_by_ordinal = False
allows_unique_and_pk = True
autoindexes_primary_keys = True
needs_datetime_string_cast = True
needs_upper_for_iops = False
supports_constraints = True
supports_tablespaces = True
uses_case_insensitive_names = True
uses_custom_queryset = True
class DatabaseWrapper(BaseDatabaseWrapper):
features = DatabaseFeatures()
ops = DatabaseOperations()
collation = settings.DATABASE_OPTIONS['collation']
deprecated = (
('DATABASE_ODBC_DRIVER', 'driver'),
('DATABASE_ODBC_DSN', 'dsn'),
('DATABASE_ODBC_EXTRA_PARAMS', 'extra_params'),
)
for old, new in deprecated:
if hasattr(settings, old):
warnings.warn(
"The %s setting is deprecated, use DATABASE_OPTIONS['%s'] instead." % (old, new),
DeprecationWarning
)
DatabaseError = Database.DatabaseError
IntegrityError = Database.IntegrityError
class DatabaseFeatures(BaseDatabaseFeatures):
uses_custom_query_class = True
can_use_chunked_reads = False
can_return_id_from_insert = True
#uses_savepoints = True
class DatabaseWrapper(BaseDatabaseWrapper):
_DJANGO_VERSION = _DJANGO_VERSION
drv_name = None
driver_needs_utf8 = None
MARS_Connection = False
unicode_results = False
datefirst = 7
if DjangoVersion[0] == 1:
raise ImproperlyConfigured("Django %d.%d " % DjangoVersion[:2] +
"is not supported on 2.+ versions of django-pyodbc. Please look " +
"into the 1.x versions of django-pyodbc to see if your 1.x " +
"version of Django is supported by django-pyodbc")
else:
raise ImproperlyConfigured("Django %d.%d is not supported." % DjangoVersion[:2])
from django_pyodbc.operations import DatabaseOperations
from django_pyodbc.client import DatabaseClient
from django_pyodbc.compat import binary_type, text_type, timezone
from django_pyodbc.creation import DatabaseCreation
from django_pyodbc.introspection import DatabaseIntrospection
DatabaseError = Database.Error
IntegrityError = Database.IntegrityError
class DatabaseFeatures(BaseDatabaseFeatures):
can_use_chunked_reads = False
can_return_id_from_insert = True
supports_microsecond_precision = False
supports_regex_backreferencing = False
supports_subqueries_in_group_by = False
supports_transactions = True
#uses_savepoints = True
allow_sliced_subqueries = False
supports_paramstyle_pyformat = False
#has_bulk_insert = False
# DateTimeField doesn't support timezones, only DateTimeOffsetField
supports_timezones = False
supports_sequence_reset = False
# also requires "Oracle Instant Client"
hasOracle = False
oracleConnect = noop
oracleDatabaseError = oracleInterfaceError = NoopException
oracleCLOB = None
try:
import pyodbc
hasMSSql = True
mssqlConnect = pyodbc.connect
mssqlOperationalError = pyodbc.OperationalError
mssqlProgrammingError = pyodbc.ProgrammingError
mssqlInterfaceError = pyodbc.InterfaceError
mssqlInternalError = pyodbc.InternalError
mssqlDataError = pyodbc.DataError
mssqlIntegrityError = pyodbc.IntegrityError
except ImportError:
hasMSSql = False
mssqlConnect = noop
mssqlOperationalError = mssqlProgrammingError = mssqlInterfaceError = mssqlInternalError = \
mssqlDataError = mssqlIntegrityError = NoopException
try:
import sqlite3
hasSQLite = True
sqliteConnect = sqlite3.connect
sqliteParseDecltypes = sqlite3.PARSE_DECLTYPES
sqliteOperationalError = sqlite3.OperationalError
sqliteProgrammingError = sqlite3.ProgrammingError
sqliteInterfaceError = sqlite3.InterfaceError
sqliteInternalError = sqlite3.InternalError
sqliteDataError = sqlite3.DataError
async def translate_exceptions_(self, *args):
try:
return await func(self, *args)
except pyodbc.ProgrammingError as exc:
raise OperationalError(exc)
except pyodbc.IntegrityError as exc:
raise IntegrityError(exc)
except pyodbc.Error as exc:
raise (_translate_pyodbc_err(exc))