FDB Reference

Module globals

fdb.__version__

Current driver version, string.

fdb.apilevel

String constant stating the supported DB API level (2.0).

fdb.threadsafety

Integer constant stating the level of thread safety the interface supports.

Curretly 1 = Threads may share the module, but not connections.

fdb.paramstyle

String constant stating the type of parameter marker formatting expected by the interface.

‘qmark’ = Question mark style, e.g. ‘...WHERE name=?’

fdb.DESCRIPTION_NAME
fdb.DESCRIPTION_TYPE_CODE
fdb.DESCRIPTION_DISPLAY_SIZE
fdb.DESCRIPTION_INTERNAL_SIZE
fdb.DESCRIPTION_PRECISION
fdb.DESCRIPTION_SCALE
fdb.DESCRIPTION_NULL_OK

Helper constants for work with Cursor.description content.

Exceptions

exception fdb.Warning

Bases: exceptions.Exception

Exception raised for important warnings like data truncations while inserting, etc.

exception fdb.Error

Bases: exceptions.Exception

Exception that is the base class of all other error exceptions. You can use this to catch all errors with one single ‘except’ statement. Warnings are not considered errors and thus should not use this class as base.

exception fdb.InterfaceError

Bases: fdb.fbcore.Error

Exception raised for errors that are related to the database interface rather than the database itself.

exception fdb.DatabaseError

Bases: fdb.fbcore.Error

Exception raised for errors that are related to the database.

exception fdb.DataError

Bases: fdb.fbcore.DatabaseError

Exception raised for errors that are due to problems with the processed data like division by zero, numeric value out of range, etc.

exception fdb.OperationalError

Bases: fdb.fbcore.DatabaseError

Exception raised for errors that are related to the database’s operation and not necessarily under the control of the programmer, e.g. an unexpected disconnect occurs, the data source name is not found, a transaction could not be processed, a memory allocation error occurred during processing, etc.

exception fdb.IntegrityError

Bases: fdb.fbcore.DatabaseError

Exception raised when the relational integrity of the database is affected, e.g. a foreign key check fails.

exception fdb.InternalError

Bases: fdb.fbcore.DatabaseError

Exception raised when the database encounters an internal error, e.g. the cursor is not valid anymore, the transaction is out of sync, etc.

exception fdb.ProgrammingError

Bases: fdb.fbcore.DatabaseError

Exception raised for programming errors, e.g. table not found or already exists, syntax error in the SQL statement, wrong number of parameters specified, etc.

exception fdb.NotSupportedError

Bases: fdb.fbcore.DatabaseError

Exception raised in case a method or database API was used which is not supported by the database

exception fdb.TransactionConflict

Bases: fdb.fbcore.DatabaseError

This is the exception inheritance layout:

StandardError
|__Warning
|__Error
   |__InterfaceError
   |__DatabaseError
      |__DataError
      |__OperationalError
      |__IntegrityError
      |__InternalError
      |__ProgrammingError
      |__NotSupportedError

Functions

fdb.connect(dsn='', user=None, password=None, host=None, port=3050, database=None, sql_dialect=3, role=None, charset=None, buffers=None, force_write=None, no_reserve=None, db_key_scope=None, isolation_level='\x03\t\x06\x0f\x11')

Establish a connection to database.

Parameters:
  • dsn – Connection string in format [host[/port]]:database
  • user (string) – User name. If not specified, fdb attempts to use ISC_USER envar.
  • password (string) – User password. If not specified, fdb attempts to use ISC_PASSWORD envar.
  • host (string) – Server host machine specification.
  • port (integer) – Port used by Firebird server (not used).
  • database (string) – Database specification (file spec. or alias)
  • sql_dialect – SQL Dialect for connection.
  • role (string) – User role.
  • charset (string) – Character set for connection.
  • buffers (integer) – Page case size override for connection.
  • force_writes (integer) – Forced writes override for connection.
  • no_reserve (integer) – Page space reservation override for connection.
  • db_key_scope (integer) – DBKEY scope override for connection.
  • isolation_level (0, 1, 2 or 3) – Default transaction isolation level for connection (not used).
Returns:

Connection to database.

Return type:

Connection instance.

Raises:
  • ProgrammingError – For bad parameter values.
  • DatabaseError – When connection cannot be established.

Important

You may specify the database using either dns or database (with optional host), but not both.

Examples:

con = fdb.connect(dsn='host:/path/database.fdb', user='sysdba', password='pass', charset='UTF8')
con = fdb.connect(host='myhost', database='/path/database.fdb', user='sysdba', password='pass', charset='UTF8')
fdb.create_database(sql, sql_dialect=3)

Creates a new database with the supplied “CREATE DATABASE” statement.

Parameters:
  • sql – “CREATE DATABASE” statement.
  • sql_dialect (1 or 3) – SQL Dialect for newly created database.
Returns:

Connection to the newly created database.

Return type:

Connection instance.

Raises ProgrammingError:
 

When database creation fails.

Example:

con = fdb.create_database("create database '/temp/db.db' user 'sysdba' password 'pass'")

Connection

class fdb.Connection(db_handle, dpb=None, sql_dialect=3, charset=None)

Represents a connection between the database client (the Python process) and the database server.

Important

DO NOT create instances of this class directly! Use only connect() or create_database() to get Connection instances.

Parameters:
  • db_handle – Database handle provided by factory function.
  • dpb – Database Parameter Block associated with database handle.
  • sql_dialect (integer) – SQL Dialect associated with database handle.
  • charset (string) – Character set associated with database handle.
begin(tpb=None)

Starts a transaction explicitly. Operates on main_transaction. See Transaction.begin() for details.

Parameters:tpb (TPB instance, list/tuple of isc_tpb_* constants or bytestring) – (Optional) Transaction Parameter Buffer for newly started transaction. If not specified, default_tpb is used.
close()

Close the connection now (rather than whenever __del__ is called). The connection will be unusable from this point forward; an Error (or subclass) exception will be raised if any operation is attempted with the connection. The same applies to all cursor and transaction objects trying to use the connection.

Also closes all EventConduit, Cursor and Transaction instances associated with this connection.

Raises ProgrammingError:
 When connection is a member of a ConnectionGroup.
commit(retaining=False)

Commit pending transaction to the database. Operates on main_transaction. See Transaction.commit() for details.

Parameters:retaining (boolean) – (Optional) Indicates whether the transactional context of the transaction being resolved should be recycled.
Raises ProgrammingError:
 If Connection is closed.
cursor()

Return a new Cursor instance using the connection associated with main_transaction. See Transaction.cursor() for details.

Raises ProgrammingError:
 If Connection is closed.
database_info(info_code, result_type)

Wraps the Firebird C API function isc_database_info.

For documentation, see the IB 6 API Guide section entitled “Requesting information about an attachment” (p. 51).

Note that this method is a VERY THIN wrapper around the FB C API function isc_database_info. This method does NOT attempt to interpret its results except with regard to whether they are a string or an integer.

For example, requesting isc_info_user_names will return a string containing a raw succession of length-name pairs. A thicker wrapper might interpret those raw results and return a Python tuple, but it would need to handle a multitude of special cases in order to cover all possible isc_info_* items.

Parameters:
  • info_code (integer) – One of the isc_info_* constants.
  • result_type (string) – Must be either ‘s’ if you expect a string result, or ‘i’ if you expect an integer result.
Raises:
  • DatabaseError – When error is returned from server.
  • OperationalError – When returned information is bigger than SHRT_MAX.
  • InternalError – On unexpected processing condition.
  • ValueError – On illegal result_type value.

See also

Extracting data with the database_info function is rather clumsy. See db_info() for higher-level means of accessing the same information.

Note

Some of the information available through this method would be more easily retrieved with the Services API (see submodule fdb.services).

db_info(request)

Higher-level convenience wrapper around the database_info() method that parses the output of database_info into Python-friendly objects instead of returning raw binary buffers in the case of complex result types.

Parameters:

request – Single fdb.isc_info_* info request code or a sequence of such codes.

Returns:

Mapping of (info request code -> result).

Raises:
  • ValueError – When requested code is not recognized.
  • OperationalError – On unexpected processing condition.
drop_database()

Drops the database to which this connection is attached.

Unlike plain file deletion, this method behaves responsibly, in that it removes shadow files and other ancillary files for this database.

Raises:
  • ProgrammingError – When connection is a member of a ConnectionGroup.
  • DatabaseError – When error is returned from server.
event_conduit(event_names)

Creates a conduit through which database event notifications will flow into the Python program.

Parameters:event_names – A sequence of string event names.
Returns:An EventConduit instance.
execute_immediate(sql)

Executes a statement in context of main_transaction without caching its prepared form.

Automatically starts transaction if it’s not already started.

Parameters:sql (string) – SQL statement to execute.

Important

The statement must not be of a type that returns a result set. In most cases (especially cases in which the same statement – perhaps a parameterized statement – is executed repeatedly), it is better to create a cursor using the connection’s cursor method, then execute the statement using one of the cursor’s execute methods.

Parameters:

sql (string) – SQL statement to execute.

Raises:
  • ProgrammingError – When connection is closed.
  • DatabaseError – When error is returned from server.
rollback(retaining=False, savepoint=None)

Causes the the database to roll back to the start of pending transaction. Operates on main_transaction. See Transaction.rollback() for details.

Parameters:
  • retaining (boolean) – (Optional) Indicates whether the transactional context of the transaction being resolved should be recycled.
  • savepoint (string) – (Optional) Causes the transaction to roll back only as far as the designated savepoint, rather than rolling back entirely.
Raises ProgrammingError:
 

If Connection is closed.

savepoint(name)

Establishes a named SAVEPOINT for current transaction. Operates on main_transaction. See Transaction.savepoint() for details.

Parameters:name (string) – Name for savepoint.
Raises ProgrammingError:
 If Connection is closed.

Example:

con.savepoint('BEGINNING_OF_SOME_SUBTASK')
...
con.rollback(savepoint='BEGINNING_OF_SOME_SUBTASK')
trans(default_tpb=None)

Creates a new Transaction that operates within the context of this connection. Cursors can be created within that Transaction via its cursor() method.

Parameters:default_tpb (TPB instance, list/tuple of isc_tpb_* constants or bytestring) – (optional) Transaction Parameter Block for newly created Transaction. If not specified, default_tpb is used.
Raises ProgrammingError:
 If Connection is closed.
trans_info(request)

Pythonic wrapper around transaction_info() call. Operates on main_transaction. See Transaction.trans_info() for details.

Parameters:

request – One or more information request codes (see transaction_info() for details). Multiple codes must be passed as tuple.

Returns:

Decoded response(s) for specified request code(s). When multiple requests are passed, returns a dictionary where key is the request code and value is the response from server.

Raises:
  • ProgrammingError – When transaction is not active.
  • OperationalError – When result is too large to fit into buffer of size SHRT_MAX.
  • InternalError – On unexpected processing condition.
transaction_info(info_code, result_type)

Returns information about active transaction. Thin wrapper around Firebird API isc_transaction_info call. Operates on main_transaction. See Transaction.transaction_info() for details.

Parameters:
  • info_code (integer) –

    One from next constants:

    • isc_info_tra_id
    • isc_info_tra_oldest_interesting
    • isc_info_tra_oldest_snapshot
    • isc_info_tra_oldest_active
    • isc_info_tra_isolation
    • isc_info_tra_access
    • isc_info_tra_lock_timeout

    See Firebird API Guide for details.

  • result_type (string) –

    String code for result type:

    • ‘i’ for Integer
    • ‘s’ fro String
Returns:

Decoded response(s) for specified request code(s). When multiple requests are passed, returns a dictionary where key is the request code and value is the response from server.

Raises:
  • ProgrammingError – When transaction is not active.
  • OperationalError – When result is too large to fit into buffer of size SHRT_MAX.
  • InternalError – On unexpected processing condition.
  • ValueError – On illegal result_type value.
charset

(Read Only) (string) Connection Character set name.

closed

(Read Only) True if connection is closed.

default_tpb

(Read/Write) Deafult Transaction Parameter Block used for all newly started transactions.

group

(Read Only) ConnectionGroup this Connection belongs to, or None.

main_transaction

(Read Only) Main Transaction instance for this connection Connection methods begin(), savepoint(), commit() and rollback() are delegated to this transaction object.

server_version

(Read Only) (string) Version string returned by server for this connection.

sql_dialect = None

(integer) sql_dialect for this connection, do not change.

transactions

(Read Only) (tuple) Transaction instances associated with this connection.

Cursor

class fdb.Cursor(connection, transaction)

Represents a database cursor, which is used to execute SQL statement and manage the context of a fetch operation.

Important

DO NOT create instances of this class directly! Use only Connection.cursor(), Transaction.cursor() and ConnectionGroup.cursor() to get Cursor instances that operate in desired context.

Note

Cursor is actually a high-level wrapper around PreparedStatement instance(s) that handle the actual SQL statement execution and result management. Cursor has an internal cache of PreparedStatements, so when the same SQL statement is executed repeatedly, related PreparedStatement is re-used, which enhances performance. This convenient enhancement has a side effect: Cursor that was used to perform many different SQL statements may hold very large cache of PerapedStatements. To clear the cache, you’ll need to call clear_cache().

Tip

Cursor supports the iterator protocol, yielding tuples of values like fetchone().

Important

The association between a Cursor and its Transaction and Connection is set when the Cursor is created, and cannot be changed during the lifetime of that Cursor.

Parameters:
  • connectionConnection instance this cursor should be bound to.
  • transactionTransaction instance this cursor should be bound to.
callproc(procname, parameters=None)

Call a stored database procedure with the given name.

The result of the call is available through the standard fetchXXX() methods.

Parameters:
  • procname (string) – Stored procedure name.
  • parameters (List or Tuple) – (Optional) Sequence of parameters. Must contain one entry for each argument that the procedure expects.
Returns:

parameters, as required by Python DB API 2.0 Spec.

Raises:
  • TypeError – When parameters is not List or Tuple.
  • ProgrammingError – When more parameters than expected are suplied.
  • DatabaseError – When error is returned by server.
clear_cache()

Clear the internal cache with PreparedStatement instances.

All prepared statements except current one are permanently closed, and the cache is cleared.

Note

Current prepared statement is still in its actual state, but it’s removed from cache, so when next statement (even the same SQL command) is executed, this current PreparedStatement instance is disposed.

close()

Close the cursor now (rather than whenever __del__ is called).

Closes any currently open PreparedStatement. However, the cursor is still bound to Connection and Transaction, so it could be still used to execute SQL statements. Also the cache with prepared statements is left intact.

Warning

FDB’s implementation of Cursor somewhat violates the Python DB API 2.0, which requires that cursor will be unusable after call to close; and an Error (or subclass) exception should be raised if any operation is attempted with the cursor.

If you’ll take advantage of this anomaly, your code would be less portable to other Python DB API 2.0 compliant drivers.

execute(operation, parameters=None)

Prepare and execute a database operation (query or command).

Note

Execution is handled by PreparedStatement that is either supplied as operation parameter, or created internally when operation is a string. Internally created PreparedStatements are stored in cache for later reuse, when the same operation string is used again.

Returns:

self, so call to execute could be used as iterator.

Parameters:
  • operation (string or PreparedStatement instance) – SQL command specification.
  • parameters (List or Tuple) – (Optional) Sequence of parameters. Must contain one entry for each argument that the operation expects.
Raises:
  • ValueError – When operation PreparedStatement belongs to different Cursor instance.
  • TypeError – When parameters is not List or Tuple.
  • ProgrammingError – When more parameters than expected are suplied.
  • DatabaseError – When error is returned by server.
executemany(operation, seq_of_parameters)

Prepare a database operation (query or command) and then execute it against all parameter sequences or mappings found in the sequence seq_of_parameters.

Note

This function simply calls execute() in a loop, feeding it with parameters from seq_of_parameters. Because execute caches PreparedStatements, calling executemany is equally efective as direct use of prepared statement and calling execute in a loop directly in application.

Parameters:
  • operation (string or PreparedStatement instance) – SQL command specification.
  • seq_of_parameters (List or Tuple) – Sequence of sequences of parameters. Must contain one sequence of parameters for each execution that has one entry for each argument that the operation expects.
Raises:
  • ValueError – When operation PreparedStatement belongs to different Cursor instance.
  • TypeError – When seq_of_parameters is not List or Tuple.
  • ProgrammingError – When there are more parameters in any sequence than expected.
  • DatabaseError – When error is returned by server.
fetchall()

Fetch all (remaining) rows of a query result.

Returns:

List of tuples, where each tuple is one row of returned values.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When underlying PreparedStatement is closed, statement was not yet executed, or unknown status is returned by fetch operation.
fetchallmap()

Fetch all (remaining) rows of a query result like fetchall(), except that it returns a list of mappings of field name to field value, rather than a list of tuples.

Returns:

List of fbcore._RowMapping instances, one such instance for each row.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When underlying PreparedStatement is closed, statement was not yet executed, or unknown status is returned by fetch operation.
fetchmany(size=1)

Fetch the next set of rows of a query result, returning a sequence of sequences (e.g. a list of tuples). An empty sequence is returned when no more rows are available. The number of rows to fetch per call is specified by the parameter. If it is not given, the cursor’s arraysize determines the number of rows to be fetched. The method does try to fetch as many rows as indicated by the size parameter. If this is not possible due to the specified number of rows not being available, fewer rows may be returned.

Parameters:

size (integer) – Max. number of rows to fetch.

Returns:

List of tuples, where each tuple is one row of returned values.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When underlying PreparedStatement is closed, statement was not yet executed, or unknown status is returned by fetch operation.
fetchmanymap(size=1)

Fetch the next set of rows of a query result, like fetchmany(), except that it returns a list of mappings of field name to field value, rather than a list of tuples.

Parameters:

size (integer) – Max. number of rows to fetch.

Returns:

List of fbcore._RowMapping instances, one such instance for each row.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When underlying PreparedStatement is closed, statement was not yet executed, or unknown status is returned by fetch operation.
fetchone()

Fetch the next row of a query result set.

Returns:

tuple of returned values, or None when no more data is available.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When underlying PreparedStatement is closed, statement was not yet executed, or unknown status is returned by fetch operation.
fetchonemap()

Fetch the next row of a query result set like fetchone(), except that it returns a mapping of field name to field value, rather than a tuple.

Returns:

fbcore._RowMapping of returned values, or None when no more data is available.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When underlying PreparedStatement is closed, statement was not yet executed, or unknown status is returned by fetch operation.
iter()

Equivalent to the fetchall(), except that it returns iterator rather than materialized list.

Returns:Iterator that yields tuple of values like fetchone().
itermap()

Equivalent to the fetchallmap(), except that it returns iterator rather than materialized list.

Returns:Iterator that yields fbcore._RowMapping instance like fetchonemap().
next()

Return the next item from the container. Part of iterator protocol.

Raises StopIteration:
 If there are no further items.
prep(operation)

Create prepared statement for repeated execution.

Note

Returned PreparedStatement instance is bound to its Cursor instance via strong reference, and is not stored in Cursor’s internal cache of prepared statements.

Parameters:

operation (string) – SQL command

Returns:

PreparedStatement instance.

Raises:
  • DatabaseError – When error is returned by server.
  • InternalError – On unexpected processing condition.
set_stream_blob(blob_name)

Specify a BLOB column(s) to work in stream mode instead classic, materialized mode for already executed statement.

Parameters:blob_name (string or sequence) – Single name or sequence of column names. Name must be in format as it’s stored in database (refer to description for real value).

Important

BLOB name is permanently added to the list of BLOBs handled as stream BLOBs by current PreparedStatement instance. If instance is stored in internal cache of prepared statements, the same command executed repeatedly will retain this setting.

Parameters:blob_name (string) – Name of BLOB column.
Raises ProgrammingError:
 
setinputsizes(sizes)

Required by Python DB API 2.0, but pointless for Firebird, so it does nothing.

setoutputsize(size, column=None)

Required by Python DB API 2.0, but pointless for Firebird, so it does nothing.

arraysize = 1

(Read/Write) As required by the Python DB API 2.0 spec, the value of this attribute is observed with respect to the fetchmany() method. However, changing the value of this attribute does not make any difference in fetch efficiency because the database engine only supports fetching a single row at a time.

description

(Read Only) Sequence of 7-item sequences. Each of these sequences contains information describing one result column: (name, type_code, display_size,internal_size, precision, scale, null_ok)

If cursor doesn’t have a prepared statement, the value is None.

name

(Read/Write) (string) Name for the SQL cursor. This property can be ignored entirely if you don’t need to use it.

plan

(Read Only) (string) A string representation of the execution plan for last executed statement generated by the database engine’s optimizer. None if no statement was executed.

rowcount

(Read Only) (integer) Specifies the number of rows that the last executeXXX() produced (for DQL statements like select) or affected (for DML statements like update or insert ).

The attribute is -1 in case no executeXXX() has been performed on the cursor or the rowcount of the last operation is not determinable by the interface.

Note

The database engine’s own support for the determination of “rows affected”/”rows selected” is quirky. The database engine only supports the determination of rowcount for INSERT, UPDATE, DELETE, and SELECT statements. When stored procedures become involved, row count figures are usually not available to the client. Determining rowcount for SELECT statements is problematic: the rowcount is reported as zero until at least one row has been fetched from the result set, and the rowcount is misreported if the result set is larger than 1302 rows. The server apparently marshals result sets internally in batches of 1302, and will misreport the rowcount for result sets larger than 1302 rows until the 1303rd row is fetched, result sets larger than 2604 rows until the 2605th row is fetched, and so on, in increments of 1302.

Transaction

class fdb.Transaction(connections, default_tpb=None, default_action='commit')

Represents a transaction context, which is used to execute SQL statement.

Important

DO NOT create instances of this class directly! Connection and ConnectionGroup manage Transaction internally, surfacing all important methods directly in their interfaces. If you want additional transactions independent from Connection.main_transaction, use Connection.trans() method to obtain such Transaction instance.

Parameters:
  • connections (iterable) – Sequence of (up to 16) Connection instances.
  • default_tpb (TPB instance, list/tuple of isc_tpb_* constants or bytestring) – Transaction Parameter Block for this transaction. If None is specified, uses ISOLATION_LEVEL_READ_COMMITED.
  • default_action (string ‘commit’ or ‘rollback’) – Action taken when active transaction is ended automatically (during close() or begin()).
Raises ProgrammingError:
 

When zero or more than 16 connections are given.

begin(tpb=None)

Starts a transaction explicitly.

Parameters:tpb (TPB instance, list/tuple of isc_tpb_* constants or bytestring) – (optional) Transaction Parameter Block for newly created Transaction. If not specified, default_tpb is used.

Note

Calling this method directly is never required; a transaction will be started implicitly if necessary.

Important

If the physical transaction is unresolved when this method is called, a commit() or rollback() will be performed first, accordingly to default_action value.

Raises:
  • DatabaseError – When error is returned by server.
  • ProgrammingError – When TPB is in usupported format, or transaction is permanently closed.
close()

Permanently closes the Transaction object and severs its associations with other objects (Cursor and Connection instances).

Important

If the physical transaction is unresolved when this method is called, a commit() or rollback() will be performed first, accordingly to default_action value.

commit(retaining=False)

Commit any pending transaction to the database.

Note

If transaction is not active, this method does nothing, because the consensus among Python DB API experts is that transactions should always be started implicitly, even if that means allowing a commit() or rollback() without an actual transaction.

Parameters:retaining (boolean) – Indicates whether the transactional context of the transaction being resolved should be recycled.
Raises DatabaseError:
 When error is returned by server as response to commit.
cursor(connection=None)

Creates a new Cursor that will operate in the context of this Transaction.

Parameters:connection (Connection instance) – Required only when Transaction is bound to multiple Connections, to specify to which Connection the returned Cursor should be bound.
Raises ProgrammingError:
 When transaction operates on multiple Connections and: connection parameter is not specified, or specified connection is not among Connections this Transaction is bound to.
execute_immediate(sql)

Executes a statement without caching its prepared form on all connections this transaction is bound to.

Automatically starts transaction if it’s not already started.

Parameters:sql (string) – SQL statement to execute.

Important

The statement must not be of a type that returns a result set. In most cases (especially cases in which the same statement – perhaps a parameterized statement – is executed repeatedly), it is better to create a cursor using the connection’s cursor method, then execute the statement using one of the cursor’s execute methods.

Parameters:sql (string) – SQL statement to execute.
Raises DatabaseError:
 When error is returned from server.
prepare()

Manually triggers the first phase of a two-phase commit (2PC).

Note

Direct use of this method is optional; if preparation is not triggered manually, it will be performed implicitly by commit() in a 2PC.

rollback(retaining=False, savepoint=None)

Rollback any pending transaction to the database.

Note

If transaction is not active, this method does nothing, because the consensus among Python DB API experts is that transactions should always be started implicitly, even if that means allowing a commit() or rollback() without an actual transaction.

Parameters:
  • retaining (boolean) – Indicates whether the transactional context of the transaction being resolved should be recycled. Mutually exclusive with ‘savepoint`.
  • savepoint (string) – Savepoint name. Causes the transaction to roll back only as far as the designated savepoint, rather than rolling back entirely. Mutually exclusive with ‘retaining`.
Raises:
  • ProgrammingError – If both savepoint and retaining are specified.
  • DatabaseError – When error is returned by server as response to rollback.
savepoint(name)

Establishes a savepoint with the specified name.

Note

If transaction is bound to multiple connections, savepoint is created on all of them.

Important

Because savepoint is created not through Firebird API (there is no such API call), but by executing SAVEPOINT <name> SQL statement, calling this method starts the transaction if it was not yet started.

Parameters:name (string) – Savepoint name.
trans_info(request)

Pythonic wrapper around transaction_info() call.

Parameters:request – One or more information request codes (see transaction_info() for details). Multiple codes must be passed as tuple.
Returns:Decoded response(s) for specified request code(s). When multiple requests are passed, returns a dictionary where key is the request code and value is the response from server.
transaction_info(info_code, result_type)

Return information about active transaction.

This is very thin wrapper around Firebird API isc_transaction_info call.

Parameters:
  • info_code (integer) – One from the isc_info_tra_* constants.
  • result_type (string ‘s’ or ‘i’) – Code for result type.
Raises:
  • ProgrammingError – If transaction is not active.
  • OperationalError – When result is too large to fit into buffer of size SHRT_MAX.
  • InternalError – On unexpected processing condition.
  • ValueError – When illegal result type code is specified.
active

(Read Only) True if transaction is active.

closed

(Read Only) True if transaction is closed.

cursors

(Read Only) List of Cursor objects associated with this Transaction.

default_action

(Read/Write) (string) ‘commit’ or ‘rollback’, action to be taken when physical transaction has to be ended automatically. Default is ‘commit’.

default_tpb = None

(Read/Write) Transaction Parameter Block. Default is ISOLATION_LEVEL_READ_COMMITED.

PreparedStatement

class fdb.PreparedStatement(operation, cursor, internal=True)

Represents a prepared statement, an “inner” database cursor, which is used to manage the SQL statement execution and context of a fetch operation.

Important

DO NOT create instances of this class directly! Use only Cursor.prep() to get PreparedStatement instances.

Note

PreparedStatements are bound to Cursor instance that created them, and using them with other Cursor would report an error.

close()

Drops the resources associated with executed prepared statement, but keeps it prepared for another execution.

set_stream_blob(blob_name)

Specify a BLOB column(s) to work in stream mode instead classic, materialized mode.

Parameters:blob_name (string or sequence) – Single name or sequence of column names. Name must be in format as it’s stored in database (refer to description for real value).

Important

BLOB name is permanently added to the list of BLOBs handled as stream BLOBs by this instance.

Parameters:blob_name (string) – Name of BLOB column.
NO_FETCH_ATTEMPTED_YET = -1

Constant for internal use by this class.

RESULT_SET_EXHAUSTED = 100

Constant for internal use by this class.

closed

(Read Only) (boolean) True if closed. Note that closed means that PS statement handle was closed for further fetching, releasing server resources, but wasn’t dropped, and couldbe still used for another execution.

cursor = None

Cursor instance that manages this PreparedStatement.

description

(Read Only) Sequence of 7-item sequences. Each of these sequences contains information describing one result column: (name, type_code, display_size,internal_size, precision, scale, null_ok)

in_sqlda = None

Internal XSQLDA structure for input values.

in_sqlda_save = None

Internal list to save original input SQLDA structures when they has to temporarily augmented.

n_input_params = None

The number of input parameters the statement requires.

n_output_params = None

The number of output fields the statement produces.

name

(Read/Write) (string) Name for the SQL cursor. This property can be ignored entirely if you don’t need to use it.

out_sqlda = None

Internal XSQLDA structure for output values.

plan

(Read Only) (string) A string representation of the execution plan generated for this statement by the database engine’s optimizer.

rowcount

(Read Only) (integer) Specifies the number of rows that the last execution produced (for DQL statements like select) or affected (for DML statements like update or insert ).

The attribute is -1 in case the statement was not yet executed or the rowcount of the operation is not determinable by the interface.

sql

(Read Only) (string) SQL command this PreparedStatement executes.

statement_type = None

(integer) An integer code that can be matched against the statement type constants in the isc_info_sql_stmt_* series.

ConnectionGroup

class fdb.ConnectionGroup(connections=())

Manager for distributed transactions, i.e. transactions that span multiple databases.

Tip

ConnectionGroup supports in operator to check membership of connections.

Parameters:connections (iterable) – Sequence of Connection instances.

See also

See add() for list of exceptions the constructor may throw.

add(con)

Adds active connection to the group.

Parameters:

con – A Connection instance to add to this group.

Raises:
  • TypeError – When con is not Connection instance.
  • ProgrammingError – When con is already member of this or another group, or closed. When this group has unresolved transaction or contains 16 connections.
begin(tpb=None)

Starts distributed transaction over member connections.

Parameters:tpb (TPB instance, list/tuple of isc_tpb_* constants or bytestring) – (Optional) Transaction Parameter Buffer for newly started transaction. If not specified, default_tpb is used.
Raises ProgrammingError:
 When group is empty or has active transaction.
clear()

Removes all connections from group.

Raises ProgrammingError:
 When transaction is active.
commit(retaining=False)

Commits distributed transaction over member connections using 2PC.

Note

If transaction is not active, this method does nothing, because the consensus among Python DB API experts is that transactions should always be started implicitly, even if that means allowing a commit() or rollback() without an actual transaction.

Parameters:retaining (boolean) – Indicates whether the transactional context of the transaction being resolved should be recycled.
Raises ProgrammingError:
 When group is empty.
contains(con)

Returns True if specified connection belong to this group.

Parameters:conConnection instance.
count()

Returns number of Connection objects that belong to this group.

cursor(connection)

Creates a new Cursor that will operate in the context of distributed transaction and specific Connection that belongs to this group.

Note

Automatically starts transaction if it’s not already started.

Parameters:connectionConnection instance.
Raises ProgrammingError:
 When group is empty or specified connection doesn’t belong to this group.
disband()

Forcefully deletes all connections from connection group.

Note

If transaction is active, it’s canceled (rollback).

Note

Any error during transaction finalization doesn’t stop the disband process, however the exception catched is eventually reported.

execute_immediate(sql)

Executes a statement on all member connections without caching its prepared form.

Automatically starts transaction if it’s not already started.

Parameters:sql (string) – SQL statement to execute.

Important

The statement must not be of a type that returns a result set. In most cases (especially cases in which the same statement – perhaps a parameterized statement – is executed repeatedly), it is better to create a cursor using the connection’s cursor method, then execute the statement using one of the cursor’s execute methods.

Parameters:sql (string) – SQL statement to execute.
Raises DatabaseError:
 When error is returned from server.
members()

Returns list of connection objects that belong to this group.

prepare()

Manually triggers the first phase of a two-phase commit (2PC). Use of this method is optional; if preparation is not triggered manually, it will be performed implicitly by commit() in a 2PC.

remove(con)

Removes specified connection from group.

Parameters:con – A Connection instance to remove.
Raises ProgrammingError:
 When con doesn’t belong to this group or transaction is active.
rollback(retaining=False, savepoint=None)

Rollbacks distributed transaction over member connections.

Note

If transaction is not active, this method does nothing, because the consensus among Python DB API experts is that transactions should always be started implicitly, even if that means allowing a commit() or rollback() without an actual transaction.

Parameters:retaining (boolean) – Indicates whether the transactional context of the transaction being resolved should be recycled.
Raises ProgrammingError:
 When group is empty.
savepoint(name)

Establishes a named SAVEPOINT on all member connections. See Transaction.savepoint() for details.

Parameters:name (string) – Name for savepoint.
Raises ProgrammingError:
 When group is empty.
default_tpb

(Read/Write) Deafult Transaction Parameter Block used for transactions.

EventConduit

class fdb.EventConduit(db_handle, event_names)

Represents a conduit through which database event notifications will flow into the Python program.

Important

DO NOT create instances of this class directly! Use only Connection.event_conduit() to get EventConduit instances.

From the moment the conduit is created by the Connection.event_conduit() method, notifications of any events that occur will accumulate asynchronously within the conduit’s internal queue until the conduit is closed either explicitly (via the close() method) or implicitly (via garbage collection).

Parameters:
  • db_handle – Database handle.
  • event_names – List of strings that represent event names.
close()

Cancels the standing request for this conduit to be notified of events.

After this method has been called, this EventConduit object is useless, and should be discarded.

flush()

Clear any event notifications that have accumulated in the conduit’s internal queue.

wait(timeout=None)

Wait for events.

Blocks the calling thread until at least one of the events occurs, or the specified timeout (if any) expires.

Parameters:timeout (integer or float) – Number of seconds (use a float to indicate fractions of seconds). If not even one of the relevant events has occurred after timeout seconds, this method will unblock and return None. The default timeout is infinite.
Returns:None if the wait timed out, otherwise a dictionary that maps event_name -> event_occurrence_count.

Example:

>>>conduit = connection.event_conduit( ('event_a', 'event_b') )
>>>conduit.wait()
{
 'event_a': 1,
 'event_b': 0
}

In the example above event_a occurred once and event_b did not occur at all.

closed

(Read Only) (boolean) True if conduit is closed.

BlobReader

class fdb.BlobReader(blobid, db_handle, tr_handle, is_text, charset)

BlobReader is a “file-like” class, so it acts much like a file instance opened in rb mode.

Important

DO NOT create instances of this class directly! BlobReader instances are returned automatically in place of output BLOB values when stream BLOB access is requested via PreparedStatement.set_stream_blob().

Tip

BlobReader supports iterator protocol, yielding lines like readline().

close()

Closes the Reader. Like file.close().

Raises DatabaseError:
 When error is returned by server.
flush()

Flush the internal buffer. Like file.flush(). Does nothing as it’s pointless for reader.

next()

Return the next line from the BLOB. Part of iterator protocol.

Raises StopIteration:
 If there are no further lines.
read(size=-1)

Read at most size bytes from the file (less if the read hits EOF before obtaining size bytes). If the size argument is negative or omitted, read all data until EOF is reached. The bytes are returned as a string object. An empty string is returned when EOF is encountered immediately. Like file.read().

Raises ProgrammingError:
 When reader is closed.

Note

Performs automatic conversion to unicode for TEXT BLOBs, if used Python is v3 or connection charset is defined.

readline()

Read one entire line from the file. A trailing newline character is kept in the string (but may be absent when a file ends with an incomplete line). An empty string is returned when EOF is encountered immediately. Like file.readline().

Raises ProgrammingError:
 When reader is closed.

Note

Performs automatic conversion to unicode for TEXT BLOBs, if used Python is v3 or connection charset is defined.

readlines(sizehint=None)

Read until EOF using readline() and return a list containing the lines thus read. The optional sizehint argument (if present) is ignored. Like file.readlines().

Note

Performs automatic conversion to unicode for TEXT BLOBs, if used Python is v3 or connection charset is defined.

seek(offset, whence=0)

Set the file’s current position, like stdio‘s fseek(). See file.seek() details.

Parameters:
  • offset (integer) – Offset from specified position.
  • whence (os.SEEK_SET, os.SEEK_CUR or os.SEEK_END) – (Optional) Context for offset.
Raises ProgrammingError:
 

When reader is closed.

Warning

If BLOB was NOT CREATED as stream BLOB, this method raises DatabaseError exception. This constraint is set by Firebird.

tell()

Return current position in BLOB, like stdio‘s ftell() and file.tell().

closed

(Read Only) (boolean) True is BlobReader is closed.

mode

(Read Only) (string) File mode - always “rb”

TPB

class fdb.TPB

Helper class for convenient and safe construction of custom Transaction Parameter Blocks.

copy()

Returns a copy of self.

render()

Create valid transaction parameter block according to current values of member attributes.

Returns:(string) TPB block.
access_mode

(integer) Required access mode (isc_tpb_read or isc_tpb_write). Default: isc_tpb_write

isolation_level

(integer or tuple) Required Transaction Isolation Level. Single integer value equivalent to isc_tpb_concurrency or isc_tpb_consistency, or tuple of exactly two integer values, where the first one is isc_tpb_read_committed and second either isc_tpb_rec_version or isc_tpb_no_rec_version.

When value isc_tpb_read_committed is assigned without suboption, the isc_tpb_rec_version is assigned as default suboption.

Default: isc_tpb_concurrency

lock_resolution

(integer) Required lock resolution method. Either isc_tpb_wait or isc_tpb_nowait.

Default: isc_tpb_wait

lock_timeout

(integer) Required lock timeout or None.

Default: None

table_reservation

(TableReservation) Table reservation specification.

Default: None.

Instead of changing the value of the TableReservation object itself, you must change its elements by manipulating it as though it were a dictionary that mapped “TABLE_NAME”: (sharingMode, accessMode) For example:

tpb.table_reservation["MY_TABLE"] = (fdb.isc_tpb_protected, fdb.isc_tpb_lock_write)

TableReservation

class fdb.TableReservation

A dictionary-like helper class that maps “TABLE_NAME”: (sharingMode, accessMode). It performs validation of values assigned to keys.

copy()
get(key, default=None)
items()
iteritems()
iterkeys()
itervalues()
keys()
render()

Create valid table access parameter block according to current key/value pairs.

Returns:(string) Table access definition block.
values()

Internally used classes exposed to driver users

RowMapping

class fdb.fbcore._RowMapping(description, row)

An internal dictionary-like class that wraps a row of results in order to map field name to field value.

Warning

We make ABSOLUTELY NO GUARANTEES about the return value of the fetch(one|many|all) methods except that it is a sequence indexed by field position, and no guarantees about the return value of the fetch(one|many|all)map methods except that it is a mapping of field name to field value.

Therefore, client programmers should NOT rely on the return value being an instance of a particular class or type.

get(fieldName, defaultValue=None)
items()
iteritems()
iterkeys()
itervalues()
keys()
values()

Services

Module globals

fdb.services.SHUT_NORMAL
fdb.services.SHUT_MULTI
fdb.services.SHUT_SINGLE
fdb.services.SHUT_FULL

These constants are to be passed as the shutdown_mode parameter to Connection.shutdown()

fdb.services.SHUT_FORCE
fdb.services.SHUT_DENY_NEW_TRANSACTIONS
fdb.services.SHUT_DENY_NEW_ATTACHMENTS

These constants are to be passed as the shutdown_method parameter to Connection.shutdown()

fdb.services.WRITE_FORCED
fdb.services.WRITE_BUFFERED

These constants are to be passed as the mode parameter to Connection.setWriteMode()

fdb.services.ACCESS_READ_WRITE
fdb.services.ACCESS_READ_ONLY

These constants are to be passed as the mode parameter to Connection.setAccessMode()

fdb.services.CAPABILITY_MULTI_CLIENT
fdb.services.CAPABILITY_REMOTE_HOP
fdb.services.CAPABILITY_SERVER_CONFIG
fdb.services.CAPABILITY_QUOTED_FILENAME
fdb.services.CAPABILITY_NO_SERVER_SHUTDOWN

These constants are return values of Connection.get_server_capabilities()

Functions

fdb.services.connect(host='service_mgr', user='sysdba', password=None)

Establishes a connection to the Services Manager.

Parameters:
  • host (string) – (optional) Host machine specification. Local by default.
  • user (string) – (optional) Administrative user name. Defaults to content of environment variable ‘ISC_USER’ or ‘SYSDBA’.
  • password (string) – Administrative user password. Default is content of environment variable ‘ISC_PASSWORD’.

Note

By definition, a Services Manager connection is bound to a particular host. Therefore, the database specified as a parameter to methods such as getStatistics MUST NOT include the host name of the database server.

Connection

class fdb.services.Connection(host, user, password, charset=None)

Represents a sevice connection between the database client (the Python process) and the database server.

Important

DO NOT create instances of this class directly! Use only connect() to get Connection instances.

Tip

Connection supports the iterator protocol, yielding lines of result like readline().

activate_shadow(database)

Activate Database Shadow(s).

Parameters:database (string) – Database filename or alias.
add_user(user)

Add new user.

Parameters:user (User) – Instance of User with at least its name and password attributes specified as non-empty values. All other attributes are optional.

Note

This method ignores the user_id and group_id attributes of User regardless of their values.

backup(source_database, dest_filenames, dest_file_sizes=(), ignore_checksums=0, ignore_limbo_transactions=0, metadata_only=0, collect_garbage=1, transportable=1, convert_external_tables_to_internal=0, compressed=1, no_db_triggers=0, callback=None)

Request logical (GBAK) database backup. (ASYNC service)

Parameters:
  • source_database (string) – Source database specification.
  • dest_filenames (string or tuple of strings) – Backup file(s) specification.
  • dest_file_sizes (tuple of integers) – (optional) specification of backup file max. sizes.
  • ignore_checksums (integer) – 1 to ignore checksums.
  • ignore_limbo_transactions (integer) – 1 to ignore limbo transactions.
  • metadata_only (integer) – 1 to create only metadata backup.
  • collect_garbage (integer) – 0 to skip garbage collection.
  • transportable (integer) – 0 to do not create transportable backup.
  • convert_external_tables_to_internal (integer) – 1 to convert external table to internal ones.
  • compressed (integer) – 0 to create uncompressed backup.
  • no_db_triggers (integer) – 1 to disable database triggers temporarily.
  • callback (function) – Function to call back with each output line. Function must accept only one parameter: line of output.

If callback is not specified, backup log could be retrieved through readline(), readlines(), iteration over Connection or ignored via call to wait().

Note

Until backup report is not fully fetched from service (or ignored via wait()), any attempt to start another asynchronous service will fail with exception.

bring_online(database, online_mode=0)

Bring previously shut down database back online.

Parameters:

See also

See also shutdown() method.

close()

Close the connection now (rather than whenever __del__ is called). The connection will be unusable from this point forward; an Error (or subclass) exception will be raised if any operation is attempted with the connection.

commit_limbo_transaction(database, transaction_id)

Resolve limbo transaction with commit.

Parameters:
  • database (string) – Database filename or alias.
  • transaction_id (integer) – ID of Transaction to resolve.
get_architecture()

Get Firebird Server architecture.

Returns string:Architecture (example: ‘Firebird/linux AMD64’).
get_attached_database_names()

Get list of attached databases.

Returns list:Filenames of attached databases.
get_connection_count()

Get number of attachments to server.

Returns integer:
 Directory path.
get_home_directory()

Get Firebird Home (installation) Directory.

Returns string:Directory path.
get_limbo_transaction_ids(database)

Get list of transactions in limbo.

Parameters:database (string) – Database filename or alias.
Returns list:Transaction IDs.
Raises InternalError:
 When can’t process the result buffer.
get_lock_file_directory()

Get directory location for Firebird lock files.

Returns string:Directory path.
get_log(callback=None)

Request content of Firebird Server log. (ASYNC service)

Parameters:callback (function) – Function to call back with each output line. Function must accept only one parameter: line of output.

If callback is not specified, log content could be retrieved through readline(), readlines(), iteration over Connection or ignored via call to wait().

Note

Until log content is not fully fetched from service (or ignored via wait()), any attempt to start another asynchronous service will fail with exception.

get_message_file_directory()

Get directory with Firebird message file.

Returns string:Directory path.
get_security_database_path()

Get full path to Firebird security database.

Returns string:Path (path+filename) to security database.
get_server_capabilities()

Get list of Firebird capabilities.

Returns tuple:Capability info codes for each capability reported by server.

Next fdb.services constants define possible info codes returned:

:data:`CAPABILITY_MULTI_CLIENT`
:data:`CAPABILITY_REMOTE_HOP`
:data:`CAPABILITY_SERVER_CONFIG`
:data:`CAPABILITY_QUOTED_FILENAME`
:data:`CAPABILITY_NO_SERVER_SHUTDOWN`

Example:

>>>fdb.services.CAPABILITY_REMOTE_HOP in svc.get_server_capabilities()
True
get_server_version()

Get Firebird version.

Returns string:Firebird version (example: ‘LI-V2.5.2.26536 Firebird 2.5’).
get_service_manager_version()

Get Firebird Service Manager version number.

Returns integer:
 Version number.
get_statistics(database, show_only_db_log_pages=0, show_only_db_header_pages=0, show_user_data_pages=1, show_user_index_pages=1, show_system_tables_and_indexes=0, show_record_versions=0, callback=None)

Request database statisctics. (ASYNC service)

Parameters:
  • database (string) – Database specification.
  • show_only_db_log_pages (integer) – 1 to analyze only log pages.
  • show_only_db_header_pages (integer) – 1 to analyze only database header. When set, all other parameters are ignored.
  • show_user_data_pages (integer) – 0 to skip user data analysis.
  • show_user_index_pages (integer) – 0 to skip user index analysis.
  • show_system_tables_and_indexes (integer) – 1 to analyze system tables and indices.
  • show_record_versions (integer) – 1 to analyze record versions.
  • callback (function) – Function to call back with each output line. Function must accept only one parameter: line of output.

If callback is not specified, statistical report could be retrieved through readline(), readlines(), iteration over Connection or ignored via call to wait().

Note

Until report is not fully fetched from service (or ignored via wait()), any attempt to start another asynchronous service will fail with exception.

get_users(user_name=None)

Get information about user(s).

Parameters:user_name (string) – (Optional) When specified, returns information only about user with specified user name.
Returns list:User instances.
isrunning()

Returns True if service is running.

Note

Some services like backup() or sweep() may take time to comlete, so they’re called asynchronously. Until they’re finished, no other async service could be started.

modify_user(user)

Modify user information.

Parameters:user (User) – Instance of User with at least its name attribute specified as non-empty value.

Note

This method sets first_name, middle_name and last_name to their actual values, and ignores the user_id and group_id attributes regardless of their values. password is set only when it has value.

nbackup(source_database, dest_filename, nbackup_level=0, no_db_triggers=0)

Perform physical (NBACKUP) database backup.

Parameters:
  • source_database (string) – Source database specification.
  • dest_filename – Backup file specification.
  • nbackup_level (integer) – Incremental backup level.
  • no_db_triggers (integer) – 1 to disable database triggers temporarily.

Note

Method call will not return until action is finished.

next()

Return the next result line from service manager. Part of iterator protocol.

Raises StopIteration:
 If there are no further lines.
nrestore(source_filenames, dest_filename, no_db_triggers=0)

Perform restore from physical (NBACKUP) database backup.

Parameters:
  • source_filenames (string or tuple of strings) – Backup file(s) specification.
  • dest_filename – Database file specification.
  • no_db_triggers (integer) – 1 to disable database triggers temporarily.

Note

Method call will not return until action is finished.

readline()

Get next line of textual output from last service query.

Returns string:Output line.
readlines()

Get list of remaining output lines from last service query.

Returns list:Service output.
Raises ProgrammingError:
 When service is not in fetching mode.
remove_user(user)

Remove user.

Parameters:user (string or User) – User name or Instance of User with at least its name attribute specified as non-empty value.
repair(database, read_only_validation=0, ignore_checksums=0, kill_unavailable_shadows=0, mend_database=0, validate_database=1, validate_record_fragments=1)

Database Validation and Repair.

Parameters:
  • database (string) – Database filename or alias.
  • read_only_validation (integer) – 1 to prevent any database changes.
  • ignore_checksums (integer) – 1 to ignore page checksum errors.
  • kill_unavailable_shadows (integer) – 1 to kill unavailable shadows.
  • mend_database (integer) – 1 to fix database for backup.
  • validate_database (integer) – 0 to skip database validation.
  • validate_record_fragments (integer) – 0 to skip validation of record fragments.

Note

Method call will not return until action is finished.

restore(source_filenames, dest_filenames, dest_file_pages=(), page_size=None, cache_buffers=None, access_mode_read_only=0, replace=0, deactivate_indexes=0, do_not_restore_shadows=0, do_not_enforce_constraints=0, commit_after_each_table=0, use_all_page_space=0, no_db_triggers=0, metadata_only=0, callback=None)

Request database restore from logical (GBAK) backup. (ASYNC service)

Parameters:
  • source_filenames (string or tuple of strings) – Backup file(s) specification.
  • dest_filenames (string or tuple of strings) – Database file(s) specification.
  • dest_file_pages (tuple of integers) – (optional) specification of database file max. # of pages.
  • page_size (integer) – (optional) Page size.
  • cache_buffers (integer) – (optional) Size of page-cache for this database.
  • access_mode_read_only (integer) – 1 to create R/O database.
  • replace (integer) – 1 to replace existing database.
  • deactivate_indexes (integer) – 1 to do not activate indices.
  • do_not_restore_shadows (integer) – 1 to do not restore shadows.
  • do_not_enforce_constraints (integer) – 1 to do not enforce constraints during restore.
  • commit_after_each_table (integer) – 1 to commit after each table is restored.
  • use_all_page_space (integer) – 1 to use all space on data pages.
  • no_db_triggers (integer) – 1 to disable database triggers temporarily.
  • metadata_only (integer) – 1 to restore only database metadata.
  • callback (function) – Function to call back with each output line. Function must accept only one parameter: line of output.

If callback is not specified, restore log could be retrieved through readline(), readlines(), iteration over Connection or ignored via call to wait().

Note

Until restore report is not fully fetched from service (or ignored via wait()), any attempt to start another asynchronous service will fail with exception.

rollback_limbo_transaction(database, transaction_id)

Resolve limbo transaction with rollback.

Parameters:
  • database (string) – Database filename or alias.
  • transaction_id (integer) – ID of Transaction to resolve.
set_access_mode(database, mode)

Set Database Access mode: Read Only or Read/Write

Parameters:
set_default_page_buffers(database, n)

Set individual page cache size for Database.

Parameters:
  • database (string) – Database filename or alias.
  • n (integer) – Number of pages.
set_reserve_page_space(database, reserve_space)

Set data page space reservation policy.

Parameters:
  • database (string) – Database filename or alias.
  • reserve_space (boolean) – True to reserve space, False to do not.
set_sql_dialect(database, dialect)

Set SQL Dialect for Database.

Parameters:
  • database (string) – Database filename or alias.
  • dialect (integer) – 1 or 3.
set_sweep_interval(database, n)

Set treshold for automatic sweep.

Parameters:
  • database (string) – Database filename or alias.
  • n (integer) – Sweep treshold, or 0 to disable automatic sweep.
set_write_mode(database, mode)

Set Disk Write Mode: Sync (forced writes) or Async (buffered).

Parameters:
shutdown(database, shutdown_mode, shutdown_method, timeout)

Database shutdown.

Parameters:

See also

See also bring_online() method.

sweep(database)

Perform Database Sweep.

Note

Method call will not return until sweep is finished.

Parameters:database (string) – Database filename or alias.
trace_list()

Get information about existing trace sessions.

Returns dictionary:
 

Mapping SESSION_ID -> SESSION_PARAMS

Session parameters is another dictionary with next keys:

name:(string) (optional) Session name if specified.
date:(datetime.datetime) Session start date and time.
user:(string) Trace user name.
flags:(list of strings) Session flags.
Raises OperationalError:
 

When server can’t perform requested operation.

trace_resume(trace_id)

Resume trace session.

Parameters:

trace_id (integer) – Trace session ID.

Returns string:

Text with confirmation that session was resumed.

Raises:
  • DatabaseError – When trace session is not resumed.
  • OperationalError – When server can’t perform requested operation.
trace_start(config, name=None)

Start new trace session. (ASYNC service)

Parameters:
  • config (string) – Trace session configuration.
  • name (string) – (optional) Trace session name.
Returns integer:
 

Trace session ID.

Raises DatabaseError:
 

When session ID is not returned on start.

Trace session output could be retrieved through readline(), readlines(), iteration over Connection or ignored via call to wait().

Note

Until session output is not fully fetched from service (or ignored via wait()), any attempt to start another asynchronous service including call to any trace_ method will fail with exception.

trace_stop(trace_id)

Stop trace session.

Parameters:

trace_id (integer) – Trace session ID.

Returns string:

Text with confirmation that session was stopped.

Raises:
  • DatabaseError – When trace session is not stopped.
  • OperationalError – When server can’t perform requested operation.
trace_suspend(trace_id)

Suspend trace session.

Parameters:

trace_id (integer) – Trace session ID.

Returns string:

Text with confirmation that session was paused.

Raises:
  • DatabaseError – When trace session is not paused.
  • OperationalError – When server can’t perform requested operation.
user_exists(user)

Check for user’s existence.

Parameters:user (string or User) – User name or Instance of User with at least its name attribute specified as non-empty value.
Returns boolean:
 True when the specified user exists.
wait()

Wait until running service completes.

QUERY_TYPE_PLAIN_INTEGER = 1
QUERY_TYPE_PLAIN_STRING = 2
QUERY_TYPE_RAW = 3
closed

(Read Only) True if connection is closed.

fetching

(Read Only) True if connection is fetching result.

User

class fdb.services.User(name=None)
first_name = None

First name.

group_id = None

User group ID

last_name = None

Last name

middle_name = None

Middle name

name = None

User login name (username).

password = None

Password. Not returned by user output methods, but must be specified to add a user.

user_id = None

User ID

ctypes interface to Firebird client library

ctypes interface to fbclient.so/dll is defined in submodule fdb.ibase.

fdb.ibase.s

alias of str

fdb.ibase.mybytes

alias of str

fdb.ibase.myunicode

alias of unicode

fdb.ibase.mylong

alias of long

fdb.ibase.StringType

alias of str

fdb.ibase.IntType

alias of int

fdb.ibase.LongType

alias of long

fdb.ibase.FloatType

alias of float

fdb.ibase.ListType

alias of list

fdb.ibase.UnicodeType

alias of unicode

fdb.ibase.TupleType

alias of tuple

class fdb.ibase.xrange

xrange([start,] stop[, step]) -> xrange object

Like range(), but instead of returning a list, returns an object that generates the numbers in the range on demand. For looping, this is slightly faster than range() and more memory efficient.

fdb.ibase.ord2()

ord(c) -> integer

Return the integer ordinal of a one-character string.

fdb.ibase.int2byte()

chr(i) -> character

Return a string of one character with ordinal i; 0 <= i < 256.