Prerequisites
To use the pyocient client, you should have this software with the corresponding version installed.Module Features
The pyocient connector supports these features as of the current version.
The pyocient module supports multi-statement transactions. By default, a connection uses autocommit mode, in which the database commits each statement immediately. To group several statements into a single transaction, set the connection autocommit attribute to
False, and then complete the transaction with commit() or rollback().
The HTTP Query API does not support transactions. To use transactions, connect to the Ocient System with the pyocient module or the Ocient JDBC driver.
The Connector supports transactions and performs the commit and rollback actions automatically. When you use the Spark Connector, you do not need to call
commit() or rollback() methods.pyocient CLI
You can make a connection by invoking the pyocient module in a command-line interface with a connection string using this syntax. SyntaxShell
- Connecting Using a DSN
- Using SQL Queries in the CLI
- Using Named Arguments
- Additional pyocient CLI Commands
Connect Using a DSN
Required. A Data Source Name (DSN) supplies the user credentials, host, port, and database to establish a connection. This string can also include various optional parameters. SyntaxShell
DSN Example
When you successfully connect with a DSN, your command line switches to interactive mode.
Shell
SELECT query that you enter at the command line.
Shell
SQL Queries in the Connection String
Instead of executing queries and commands in the CLI, you can also include SQL scripts directly in your connection string. A connection string can contain multiple queries as long as each is delineated by semicolons. You must enclose any SQL statements in a connection string in quotes and specify the statements after the DSN portion. Example This example shows a SQL query embedded in a pyocient connection string. The query processes and returns its values without launching the interactive mode.Shell
Use Optional Named Arguments
You can add these optional arguments to a connection string.Shell
Additional pyocient CLI Commands
When running in a CLI, pyocient recognizes these commands in addition to the SQL statements and queries.Run a Transaction in the pyocient CLI
The pyocient CLI runs two scripts on a single connection with the-i argument. To run multiple statements in one transaction, use the SET AUTOCOMMIT OFF statement, and then end the transaction with the COMMIT or ROLLBACK statement. Because each invocation uses one connection, include all statements of the transaction in a single input file.
The txn_commit.sql example script inserts multiple rows into the public.txn_demo table, confirms the row count with a query that reads its own uncommitted writes, and then commits the transaction.
SQL
txn_rollback.sql example script inserts multiple rows into the public.txn_demo table, confirms the row count, and then rolls back the transaction, discarding the inserted rows. The example confirms the discard using another row-count query.
SQL
-i argument.
Shell
pyocient API
This Python database API conforms to the Python Database API Specification 2.0, and you can use it to access the Ocient System. You can also execute this module as a main function, in which case it acts as a primitive CLI for the database. When you execute this module as a main function, the API takes a connection string in the DSN format. The connection string can also include one or more query strings that execute. For information on using a DSN to connect, see Connect Using a DSN. The API returns output in JSON format by default. The database returns any warnings and sends them to the Python warnings module. By default, that module sends warnings to standard output, however, you can change the behavior by using that module.pyocient.Connection
Constructor
Python
connect(), but you can also construct it directly.
You can specify connection parameters using the dsn argument, other keyword arguments, or a mix of both. If the system receives multiple arguments for the same parameters, the keyword arguments take precedence and override the dsn value.
Definitions for the connection parameters are listed in Connect Using a DSN section. Other parameters are:
configfile— The name of a configuration file in .ini format, where each section either uses default connection settings or a pattern that matches the host or database. Sections are matched in order, so highly detailed sections should precede less detailed sections.session— A string of an SSO security token.
.ini configuration file.
INI
tls — The values are on, off, or unverified in the DSN. You can also set TLS by using Connection.TLS_NONE, Connection.TLS_UNVERIFIED, or Connection.TLS_ON as a keyword parameter.
Connection Object Methods
autocommit
Controls the autocommit mode for the connection. When you set this method toTrue, the database commits each statement immediately. This mode is the default value. When you set this attribute to False, the database groups statements into a transaction that you complete by calling commit() or rollback().
When you change the value from False to True, the database commits any pending transaction.
This example disables autocommit mode for a connection.
Python
close()
Close the connection. Any subsequent queries on the closed connection fail.commit()
Commit the pending transaction and permanently save all changes made after the transaction started. This method has an effect only when theautocommit method value is False.
cursor()
Return a new cursor object for this connection.rollback()
Roll back the pending transaction and discard all changes made after the transaction started. This method has an effect only when theautocommit method value is False.
pyocient.Cursor
Constructor
Python
cursor() on a connection, but you can also create them directly by providing a connection.
Cursor Object Methods
close()
Close this cursor. The current result set is closed, but you can reuse the cursor for subsequentexecute() calls.
execute(operation, parameters=None) [#execute]
Prepare and execute a database operation (query or command). Parameters might be provided as a mapping and are bound to variables in the operation. Variables are specified in Python extended format codes, for example:WHERE name=%(name)
executemany(operation, parameterlist)
Prepare a database operation (query or command) and then execute it against all parameter sequences or mappings found in the sequenceparameterlist.
Parameters might be provided as a mapping and are bound to variables in the operation. Variables are specified in Python extended format codes, for example: WHERE name=%(name)
fetchone()
Fetch the next row of a query result set. The function returns a single row orNone when no more data rows are available.
fetchmany(size=None) [#fetchmany]
Fetch the next set of rows of a query result and return a sequence of sequences as a list of tuples. The database returns an empty sequence when no more rows are available. The number of rows to fetch per call is specified by thesize parameter. If this parameter is not specified, the array size of the cursor determines the number of rows to fetch. The method tries 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, the function returns fewer rows.
fetchall()
Fetch all (remaining) rows of a query result and return them as a sequence of sequences (e.g., a list of tuples). Note that the array size attribute of the cursor can affect the performance of this operation.arraysize
This read-and-write attribute specifies the number of rows to fetch at a time with fetchmany. The default value is1, meaning the attribute fetches a single row at a time.
tables(schema=’%’, table=’%’)
Retrieve the database tables. By default, the database returns all tables.system_tables(table=’%’)
Retrieve the database system tables.views(view=’%’)
Retrieve the database views.columns(schema=’%’, table=’%’, column=’%’)
Retrieve the database columns.indexes(schema=’%’, table=’%’)
Retrieve the database indexes.getTypeInfo()
Retrieve the database type information.fetchval()
The fetchval() convenience method returns the first column of the first row if there are results, otherwise it returnsNone.
resolve_new_endpoint(new_host, new_port)
Handles mapping to a secondary interface based on the secondary interface mapping saved on this connection. Arguments:Text
Text
redirect(new_host, new_port)
Redirects to the proper secondary interface with a new endpoint. Arguments:Text
Text
refresh()
Refresh the session associated with this connection. The server returns a new server session identifier and security token.setinputsizes(sizes)
Used before an execute call to set memory sizes for the specified operation. For details on usage, see the Python API documentation.setoutputsize(size [, column])
Used before an execute call to set a column buffer size for fetches of columns with large data types, such as LONG, BLOB, etc. For details on usage, see the Python API documentation.Type Objects and Constructors
These constructors create objects to hold special values to comply with defined types in a database schema. When you pass these objects to the cursor methods, the module detects the proper type of input parameter and binds it accordingly. For details, see the Python documentation on Type Objects and Constructors.Date(year, month, day)
This function constructs an object that holds a date value.Time(hour, minute, second)
This function constructs an object that holds a time value.Timestamp(year, month, day, hour, minute, second)
This function constructs an object that holds a timestamp value.DateFromTicks(ticks)
This function constructs an object that holds a date value from the specified ticks value (number of seconds after the epoch; see the documentation of the standard Python time module for details).TimeFromTicks(ticks)
This function constructs an object that holds a time value from the specified ticks value (number of seconds after the epoch; see the documentation of the standard Python time module for details).TimestampFromTicks(ticks)
This function constructs an object that holds a timestamp value from the specified ticks value (number of seconds after the epoch; see the documentation of the standard Python time module for details).Binary(string)
This function constructs an object capable of holding a binary (long) string value.STRING type
This type object describes columns in a database that are string-based (e.g.,CHAR).
BINARY type
This type object describes (long) binary columns in a database (e.g.,LONG, RAW, BLOB).
NUMBER type
This type object describes numeric columns in a database.DATETIME type
This type object describes date and time columns in a database.ROWID type
This type object describes the “Row ID” column in a database.Exceptions
Error Exception that is the base class of all other error exceptions.Text
Text
Text
Text
Text
Text
Text
Text
Text
Text
Optional DB API Extensions
Cursor.rownumber
This read-only attribute should provide the current 0-based index of the cursor in the result set orNone if the index cannot be determined.
You can see the index as the index of the cursor in a sequence (the result set). The next fetch operation fetches the row indexed by .rownumber in that sequence.
Connection.Error, Connection.ProgrammingError, etc.
All exception classes defined by the DB API standard should be exposed on the Connection objects as attributes (in addition to being available at module scope). These attributes simplify error handling in multi-connection environments.Cursor.connection
This read-only attribute returns a reference to the Connection object on which the cursor was created. The attribute simplifies writing polymorph code in multi-connection environments.Cursor.__iter__()
Return self to make cursors compatible with the Python iteration protocol.Transaction pyocient API Example
To run multiple statements in a single transaction with the pyocient API, set the connection autocommit attribute toFalse, and then call the commit() or rollback() methods. For transactions, autocommit mode is on by default. Ensure that you execute SQL statements that are supported by transactions. Otherwise, the database throws an error. For a list of supported statements, see Transactions.
The example code establishes a connection and creates the txn_demo table. Then, the example inserts two rows, commits the transaction, and verifies the row count. This example continues to insert two more rows and verify the row count. The code then calls the rollback method and verifies the row count to ensure that the rollback action is successful. The example resets the autocommit mode for other transactions.
Python
Related Links
pyocient PyPILinux® is the registered trademark of Linus Torvalds in the U.S. and other countries.

