Files
tryton/trytond/backend/database.py
T

223 lines
4.9 KiB
Python
Raw Normal View History

2009-02-04 15:29:28 +01:00
#This file is part of Tryton. The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
DatabaseIntegrityError = None
2009-02-06 10:26:38 +01:00
DatabaseOperationalError = None
2009-02-04 15:29:28 +01:00
class DatabaseInterface(object):
'''
Define generic interface for database connection
'''
2009-04-08 17:55:24 +02:00
def __new__(cls, database_name=''):
return object.__new__(cls)
def __init__(self, database_name=''):
2009-02-04 15:29:28 +01:00
self.database_name = database_name
def connect(self):
'''
Connect to the database
:return: the database
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
def cursor(self, autocommit=False):
'''
Retreive a cursor on the database
:param autocommit: a boolean to active autocommit
:return: a Cursor
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
def close(self):
'''
Close all connection
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
def create(self, cursor, database_name):
'''
Create a database
:param database_name: the database name
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
def drop(self, cursor, database_name):
'''
Drop a database
:param cursor: a cursor on an other database
:param database_name: the database name
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
2009-02-05 16:44:38 +01:00
@staticmethod
def dump(database_name):
'''
Dump a database
:param database_name: the database name
:return: the dump
'''
raise NotImplementedError
2009-02-05 16:44:38 +01:00
@staticmethod
def restore(database_name, data):
'''
Restore a database
:param database_name: the database name
:param data: the data
:return: True if succeed
'''
raise NotImplementedError
2009-02-05 16:44:38 +01:00
2009-02-04 15:29:28 +01:00
@staticmethod
def list(cursor):
'''
Get the list of database
:return: a list of database name
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
@staticmethod
def init(cursor):
'''
Initialize a database
:param cursor: a cursor on the database
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
2009-02-11 14:52:22 +01:00
2009-02-04 15:29:28 +01:00
class CursorInterface(object):
'''
Define generic interface for database cursor
'''
sql_log = False
IN_MAX = 1000
def __init__(self):
2009-08-11 11:13:14 +02:00
self.cache = {}
2009-02-04 15:29:28 +01:00
def get_cache(self, context=None):
'''
Return cache for the context
:param context: the context
:return: the cache dictionary
'''
if context is None:
context = {}
cache_ctx = context.copy()
for i in ('_timestamp', '_delete', '_create_records',
'_delete_records'):
if i in cache_ctx:
del cache_ctx[i]
return self.cache.setdefault(repr(cache_ctx), {})
2009-02-04 15:29:28 +01:00
def execute(self, sql, params=None):
'''
Execute a query
:param sql: a sql query string
:param params: a tuple or list of parameters
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
def close(self, close=False):
2009-02-04 15:29:28 +01:00
'''
Close the cursor
:param close: boolean to not release cursor in pool
2009-02-04 15:29:28 +01:00
'''
raise NotImplementedError
2009-02-04 15:29:28 +01:00
def commit(self):
'''
Commit the cursor
'''
2009-08-11 11:13:14 +02:00
self.cache = {}
2009-02-04 15:29:28 +01:00
def rollback(self):
'''
Rollback the cursor
'''
2009-08-11 11:13:14 +02:00
self.cache = {}
2009-02-04 15:29:28 +01:00
def test(self):
'''
Test if it is a Tryton database.
'''
raise NotImplementedError
2009-07-07 19:32:31 +02:00
def nextid(self, table):
'''
Return the next sequenced id for a table.
:param table: the table name
:return: an integer
'''
def setnextid(self, table, value):
'''
Set the current sequenced id for a table.
:param table: the table name
'''
def currid(self, table):
'''
Return the current sequenced id for a table.
:param table: the table name
:return: an integer
'''
def lastid(self):
'''
Return the last id inserted.
:return: an integer
'''
2010-02-25 16:43:04 +01:00
def lock(self, table):
2009-07-07 19:32:31 +02:00
'''
2010-02-25 16:43:04 +01:00
Lock the table
2009-07-07 19:32:31 +02:00
2010-02-25 16:43:04 +01:00
:param table: the table name
2009-07-07 19:32:31 +02:00
'''
raise NotImplementedError
def has_constraint(self):
'''
Return True if database handle constraint.
:return: a boolean
'''
raise NotImplementedError
2009-09-07 15:18:17 +02:00
def limit_clause(self, select, limit=None, offset=None):
'''
Return SELECT queries with limit and offset
:param select: the SELECT query string
:param limit: the limit
:param offset: the offset
:return: a string
'''
raise NotImplementedError
2010-02-25 16:43:04 +01:00
def update_auto_increment(self, table, value):
'''
Update auto_increment value of table
:param table: the table name
:param value: the auto_increment value
'''
pass