本文整理汇总了Python中psycopg2.errorcodes方法的典型用法代码示例。如果您正苦于以下问题:Python psycopg2.errorcodes方法的具体用法?Python psycopg2.errorcodes怎么用?Python psycopg2.errorcodes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类psycopg2
的用法示例。
在下文中一共展示了psycopg2.errorcodes方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_delete_slot
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def test_delete_slot(slot):
with patch.object(psycopg2.ProgrammingError, 'pgcode',
new_callable=PropertyMock,
return_value=psycopg2.errorcodes.UNDEFINED_OBJECT):
pe = psycopg2.ProgrammingError()
slot._repl_cursor.drop_replication_slot = Mock(side_effect=pe)
slot.delete_slot()
slot._repl_cursor.drop_replication_slot.assert_called_with('pg2kinesis')
with patch.object(psycopg2.ProgrammingError, 'pgcode',
new_callable=PropertyMock,
return_value=-1):
pe = psycopg2.ProgrammingError()
slot._repl_cursor.create_replication_slot = Mock(side_effect=pe)
with pytest.raises(psycopg2.ProgrammingError) as e_info:
slot.delete_slot()
slot._repl_cursor.drop_replication_slot.assert_called_with('pg2kinesis')
assert e_info.value.pgcode == -1
slot._repl_cursor.create_replication_slot = Mock(side_effect=Exception)
with pytest.raises(Exception):
slot.delete_slot()
slot._repl_cursor.drop_replication_slot.assert_called_with('pg2kinesis')
示例2: _txn_retry_loop
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def _txn_retry_loop(conn, callback, max_retries, max_backoff):
"""Inner transaction retry loop.
``conn`` may be either a Connection or a Session, but they both
have compatible ``begin()`` and ``begin_nested()`` methods.
"""
retry_count = 0
with conn.begin():
while True:
try:
with _NestedTransaction(conn):
ret = callback(conn)
return ret
except sqlalchemy.exc.DatabaseError as e:
if max_retries is not None and retry_count >= max_retries:
raise
retry_count += 1
if isinstance(e.orig, psycopg2.OperationalError):
if e.orig.pgcode == psycopg2.errorcodes.SERIALIZATION_FAILURE:
if max_backoff > 0:
retry_exponential_backoff(retry_count, max_backoff)
continue
raise
示例3: test_create_slot
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def test_create_slot(slot):
with patch.object(psycopg2.ProgrammingError, 'pgcode',
new_callable=PropertyMock,
return_value=psycopg2.errorcodes.DUPLICATE_OBJECT):
pe = psycopg2.ProgrammingError()
slot._repl_cursor.create_replication_slot = Mock(side_effect=pe)
slot.create_slot()
slot._repl_cursor.create_replication_slot.assert_called_with('pg2kinesis',
slot_type=psycopg2.extras.REPLICATION_LOGICAL,
output_plugin=u'test_decoding')
with patch.object(psycopg2.ProgrammingError, 'pgcode',
new_callable=PropertyMock,
return_value=-1):
pe = psycopg2.ProgrammingError()
slot._repl_cursor.create_replication_slot = Mock(side_effect=pe)
with pytest.raises(psycopg2.ProgrammingError) as e_info:
slot.create_slot()
slot._repl_cursor.create_replication_slot.assert_called_with('pg2kinesis',
slot_type=psycopg2.extras.REPLICATION_LOGICAL,
output_plugin=u'test_decoding')
assert e_info.value.pgcode == -1
slot._repl_cursor.create_replication_slot = Mock(side_effect=Exception)
with pytest.raises(Exception):
slot.create_slot()
slot._repl_cursor.create_replication_slot.assert_called_with('pg2kinesis',
slot_type=psycopg2.extras.REPLICATION_LOGICAL,
output_plugin=u'test_decoding')
示例4: create_slot
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def create_slot(self):
logger.info('Creating slot %s' % self.slot_name)
try:
self._repl_cursor.create_replication_slot(self.slot_name,
slot_type=psycopg2.extras.REPLICATION_LOGICAL,
output_plugin=self.output_plugin)
except psycopg2.ProgrammingError as p:
# Will be raised if slot exists already.
if p.pgcode != psycopg2.errorcodes.DUPLICATE_OBJECT:
logger.error(p)
raise
else:
logger.info('Slot %s is already present.' % self.slot_name)
示例5: delete_slot
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def delete_slot(self):
logger.info('Deleting slot %s' % self.slot_name)
try:
self._repl_cursor.drop_replication_slot(self.slot_name)
except psycopg2.ProgrammingError as p:
# Will be raised if slot exists already.
if p.pgcode != psycopg2.errorcodes.UNDEFINED_OBJECT:
logger.error(p)
raise
else:
logger.info('Slot %s was not found.' % self.slot_name)
示例6: _store_nobatch
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def _store_nobatch(self, conn, items):
"""Store the items one by one, without batching.
This is to be used in the anomalous cases where inserting the whole
batch throws an IntegrityError - we fall back to inserting the items
one by one, so that only the errorneous message is dropped.
"""
for message, exchange, ack in items:
item = self._get_db_item(conn, message, exchange)
if item is None:
continue
insert = (self._insert_events if exchange == EVENTS_EXCHANGE_NAME
else self._insert_logs)
try:
with conn.cursor() as cur:
insert(cur, [item])
conn.commit()
except psycopg2.OperationalError as e:
self.on_db_connection_error(e)
except (psycopg2.IntegrityError, ValueError):
logger.debug('Error storing %s: %s', exchange, item)
conn.rollback()
except psycopg2.ProgrammingError as e:
if e.pgcode == psycopg2.errorcodes.UNDEFINED_COLUMN:
logger.debug('Error storing %s: %s (undefined column)',
exchange, item)
else:
logger.exception('Error storing %s: %s (ProgrammingError)',
exchange, item)
conn.rollback()
except Exception:
logger.exception('Unexpected error while storing %s: %s',
exchange, item)
conn.rollback()
示例7: test_cleanup_on_badconn_close
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def test_cleanup_on_badconn_close(self):
# ticket #148
conn = self.conn
cur = conn.cursor()
try:
cur.execute("select pg_terminate_backend(pg_backend_pid())")
except psycopg2.OperationalError, e:
if e.pgcode != psycopg2.errorcodes.ADMIN_SHUTDOWN:
raise
示例8: skip_if_no_superuser
# 需要导入模块: import psycopg2 [as 别名]
# 或者: from psycopg2 import errorcodes [as 别名]
def skip_if_no_superuser(f):
"""Skip a test if the database user running the test is not a superuser"""
@wraps(f)
def skip_if_no_superuser_(self):
from psycopg2 import ProgrammingError
try:
return f(self)
except ProgrammingError, e:
import psycopg2.errorcodes
if e.pgcode == psycopg2.errorcodes.INSUFFICIENT_PRIVILEGE:
self.skipTest("skipped because not superuser")
else:
raise