or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

Files

docs

advanced-queuing.mdconnection-pooling.mdconnectivity.mddata-types.mddatabase-objects.mdindex.mdlobs.mdpipeline.mdsoda.mdsql-execution.mdsubscriptions.md

connectivity.mddocs/

0

# Database Connectivity

1

2

Core connection management including single connections, connection pools, and connection parameter configuration. Oracle python-oracledb supports both synchronous and asynchronous operations with thin mode (direct connection) and thick mode (using Oracle Client libraries) connectivity options.

3

4

## Capabilities

5

6

### Creating Connections

7

8

Create database connections with various authentication and configuration options.

9

10

```python { .api }

11

def connect(

12

dsn: Optional[str] = None,

13

*,

14

pool: Optional[ConnectionPool] = None,

15

pool_alias: Optional[str] = None,

16

conn_class: Type[Connection] = Connection,

17

params: Optional[ConnectParams] = None,

18

user: Optional[str] = None,

19

proxy_user: Optional[str] = None,

20

password: Optional[str] = None,

21

newpassword: Optional[str] = None,

22

wallet_password: Optional[str] = None,

23

access_token: Optional[Union[str, tuple, Callable]] = None,

24

host: Optional[str] = None,

25

port: Optional[int] = None,

26

protocol: Optional[str] = None,

27

https_proxy: Optional[str] = None,

28

https_proxy_port: Optional[int] = None,

29

service_name: Optional[str] = None,

30

instance_name: Optional[str] = None,

31

sid: Optional[str] = None,

32

server_type: Optional[str] = None,

33

cclass: Optional[str] = None,

34

purity: Optional[Purity] = None,

35

expire_time: Optional[int] = None,

36

retry_count: Optional[int] = None,

37

retry_delay: Optional[int] = None,

38

tcp_connect_timeout: Optional[float] = None,

39

ssl_server_dn_match: Optional[bool] = None,

40

ssl_server_cert_dn: Optional[str] = None,

41

wallet_location: Optional[str] = None,

42

events: Optional[bool] = None,

43

externalauth: Optional[bool] = None,

44

mode: Optional[AuthMode] = None,

45

disable_oob: Optional[bool] = None,

46

stmtcachesize: Optional[int] = None,

47

edition: Optional[str] = None,

48

tag: Optional[str] = None,

49

matchanytag: Optional[bool] = None,

50

config_dir: Optional[str] = None,

51

appcontext: Optional[list] = None,

52

shardingkey: Optional[list] = None,

53

supershardingkey: Optional[list] = None,

54

debug_jdwp: Optional[str] = None,

55

connection_id_prefix: Optional[str] = None,

56

ssl_context: Optional[Any] = None,

57

sdu: Optional[int] = None,

58

pool_boundary: Optional[str] = None,

59

use_tcp_fast_open: Optional[bool] = None,

60

ssl_version: Optional[Any] = None,

61

program: Optional[str] = None,

62

machine: Optional[str] = None,

63

terminal: Optional[str] = None,

64

osuser: Optional[str] = None,

65

driver_name: Optional[str] = None,

66

use_sni: Optional[bool] = None,

67

thick_mode_dsn_passthrough: Optional[bool] = None,

68

extra_auth_params: Optional[dict] = None,

69

pool_name: Optional[str] = None,

70

handle: Optional[int] = None,

71

) -> Connection:

72

"""

73

Creates a connection to an Oracle database and returns a Connection object.

74

75

Parameters:

76

- dsn (str): Data source name, connection string, or Easy Connect string

77

- pool (ConnectionPool): Connection pool to acquire connection from

78

- pool_alias (str): Named pool alias to acquire connection from

79

- params (ConnectParams): Pre-configured connection parameters object

80

- user (str): Username for database authentication

81

- proxy_user (str): Proxy user name for proxy authentication

82

- password (str): Password for database authentication

83

- newpassword (str): New password for password change on connect

84

- wallet_password (str): Password for encrypted wallet (thin mode)

85

- access_token (Union[str, tuple, Callable]): OAuth2 or OCI IAM token

86

- host (str): Database server hostname or IP address

87

- port (int): Database listener port number (default: 1521)

88

- protocol (str): Connection protocol ("tcp" or "tcps")

89

- service_name (str): Oracle service name

90

- sid (str): Oracle System Identifier (SID)

91

- mode (AuthMode): Authentication mode (SYSDBA, SYSOPER, etc.)

92

- Other parameters: Various connection and SSL configuration options

93

94

Returns:

95

Connection: Database connection object

96

"""

97

98

def connect_async(

99

dsn: Optional[str] = None,

100

*,

101

pool: Optional[AsyncConnectionPool] = None,

102

pool_alias: Optional[str] = None,

103

conn_class: Type[AsyncConnection] = AsyncConnection,

104

params: Optional[ConnectParams] = None,

105

**kwargs # Same parameters as connect()

106

) -> AsyncConnection:

107

"""

108

Creates an asynchronous connection to an Oracle database.

109

110

Parameters: Same as connect() but returns AsyncConnection

111

112

Returns:

113

AsyncConnection: Asynchronous database connection object

114

"""

115

```

116

117

### Connection Class

118

119

Manage database connections with transaction control, cursor creation, and administrative operations.

120

121

```python { .api }

122

class Connection:

123

"""Synchronous database connection."""

124

125

# Properties

126

autocommit: bool

127

call_timeout: int

128

current_schema: str

129

dsn: str

130

username: str

131

version: tuple

132

transaction_in_progress: bool

133

thin: bool

134

warning: Warning

135

136

def cursor(self, scrollable=False) -> Cursor:

137

"""

138

Create a cursor for executing SQL statements.

139

140

Parameters:

141

- scrollable (bool): Enable scrollable cursor

142

143

Returns:

144

Cursor object

145

"""

146

147

def commit(self) -> None:

148

"""Commit the current transaction."""

149

150

def rollback(self) -> None:

151

"""Rollback the current transaction."""

152

153

def close(self) -> None:

154

"""Close the connection and free resources."""

155

156

def ping(self) -> None:

157

"""Test if the connection is still active."""

158

159

def begin(self, formatId=None, transactionId=None, branchId=None) -> None:

160

"""

161

Begin a new transaction or join distributed transaction.

162

163

Parameters:

164

- formatId (int): Format identifier for distributed transaction

165

- transactionId (bytes): Transaction identifier

166

- branchId (bytes): Branch identifier

167

"""

168

169

def prepare(self) -> bool:

170

"""

171

Prepare the current transaction for two-phase commit.

172

173

Returns:

174

bool: True if transaction was prepared, False if no work to prepare

175

"""

176

177

def subscribe(

178

self,

179

namespace=SUBSCR_NAMESPACE_DBCHANGE,

180

protocol=SUBSCR_PROTO_CALLBACK,

181

callback=None,

182

timeout=0,

183

operations=OPCODE_ALLOPS,

184

port=0,

185

qos=0,

186

ip_address=None,

187

grouping_class=SUBSCR_GROUPING_CLASS_NONE,

188

grouping_value=0,

189

grouping_type=SUBSCR_GROUPING_TYPE_SUMMARY,

190

name=None,

191

client_initiated=False,

192

recipient_name=None

193

) -> Subscription:

194

"""

195

Create a subscription for database event notifications.

196

197

Parameters:

198

- namespace (int): Subscription namespace

199

- protocol (int): Notification protocol

200

- callback: Callback function for notifications

201

- timeout (int): Subscription timeout

202

203

Returns:

204

Subscription object

205

"""

206

207

def createlob(self, lob_type) -> LOB:

208

"""

209

Create a temporary LOB.

210

211

Parameters:

212

- lob_type: LOB type (DB_TYPE_BLOB, DB_TYPE_CLOB, etc.)

213

214

Returns:

215

LOB object

216

"""

217

218

def gettype(self, name) -> DbObjectType:

219

"""

220

Get database object type by name.

221

222

Parameters:

223

- name (str): Object type name

224

225

Returns:

226

DbObjectType object

227

"""

228

229

def cancel(self) -> None:

230

"""Cancel long-running database operation."""

231

232

def shutdown(self, mode=DBSHUTDOWN_IMMEDIATE) -> None:

233

"""

234

Shutdown the database.

235

236

Parameters:

237

- mode (int): Shutdown mode

238

"""

239

240

def startup(self, force=False, restrict=False, pfile=None, spfile=None) -> None:

241

"""

242

Startup the database.

243

244

Parameters:

245

- force (bool): Force startup

246

- restrict (bool): Restrict mode

247

- pfile (str): Parameter file path

248

- spfile (str): Server parameter file path

249

"""

250

```

251

252

### Async Connection Class

253

254

Asynchronous version of Connection with async/await support.

255

256

```python { .api }

257

class AsyncConnection:

258

"""Asynchronous database connection."""

259

260

# Properties (same as Connection)

261

autocommit: bool

262

call_timeout: int

263

current_schema: str

264

dsn: str

265

username: str

266

version: tuple

267

transaction_in_progress: bool

268

thin: bool

269

warning: Warning

270

271

async def cursor(self, scrollable=False) -> AsyncCursor:

272

"""

273

Create an async cursor for executing SQL statements.

274

275

Parameters:

276

- scrollable (bool): Enable scrollable cursor

277

278

Returns:

279

AsyncCursor object

280

"""

281

282

async def commit(self) -> None:

283

"""Commit the current transaction."""

284

285

async def rollback(self) -> None:

286

"""Rollback the current transaction."""

287

288

async def close(self) -> None:

289

"""Close the connection and free resources."""

290

291

async def ping(self) -> None:

292

"""Test if the connection is still active."""

293

```

294

295

### Connection Parameters

296

297

Configure connection parameters using ConnectParams class.

298

299

```python { .api }

300

class ConnectParams:

301

"""Connection parameter configuration."""

302

303

user: str

304

password: str

305

dsn: str

306

mode: int

307

encoding: str

308

nencoding: str

309

edition: str

310

appcontext: list

311

tag: str

312

matchanytag: bool

313

config_dir: str

314

appname: str

315

stmtcachesize: int

316

disable_oob: bool

317

auth_token: str

318

access_token: str

319

expires_in: int

320

private_key: str

321

wallet_location: str

322

wallet_password: str

323

cclass: str

324

purity: int

325

server_type: str

326

ctype: str

327

sdu: int

328

pool_boundary: str

329

use_tcp_fast_open: bool

330

ssl_server_dn_match: bool

331

ssl_server_cert_dn: str

332

ssl_version: str

333

https_proxy: str

334

https_proxy_port: int

335

debug_jdwp: str

336

connection_id_prefix: str

337

ssl_context: object

338

soda_metadata_cache: bool

339

fetch_lobs: bool

340

fetch_decimals: bool

341

fetch_info: list

342

autocommit: bool

343

call_timeout: int

344

retry_count: int

345

retry_delay: int

346

externalauth: bool

347

homogeneous: bool

348

```

349

350

### DSN Construction

351

352

Create data source names (DSN) for database connections.

353

354

```python { .api }

355

def makedsn(

356

host,

357

port,

358

sid=None,

359

service_name=None,

360

region=None,

361

sharding_key=None,

362

super_sharding_key=None,

363

cclass=None,

364

purity=None,

365

expire_time=None,

366

retry_count=None,

367

retry_delay=None,

368

tcp_connect_timeout=None,

369

ssl_server_dn_match=None,

370

ssl_server_cert_dn=None,

371

wallet_location=None,

372

**kwargs

373

) -> str:

374

"""

375

Create a data source name string.

376

377

Parameters:

378

- host (str): Database server hostname or IP

379

- port (int): Database server port number

380

- sid (str): Oracle System Identifier (exclusive with service_name)

381

- service_name (str): Service name (exclusive with sid)

382

- region (str): Oracle Cloud region

383

- sharding_key (list): Sharding key values

384

- super_sharding_key (list): Super sharding key values

385

386

Returns:

387

str: Formatted DSN string

388

"""

389

```

390

391

## Usage Examples

392

393

### Basic Connection

394

395

```python

396

import oracledb

397

import getpass

398

399

# Simple connection

400

username = "hr"

401

dsn = "localhost:1521/xepdb1"

402

password = getpass.getpass(f"Password for {username}: ")

403

404

connection = oracledb.connect(user=username, password=password, dsn=dsn)

405

print(f"Connected to Oracle Database version: {connection.version}")

406

connection.close()

407

```

408

409

### Connection with Advanced Options

410

411

```python

412

import oracledb

413

414

# Connection with advanced configuration

415

connection = oracledb.connect(

416

user="scott",

417

password="tiger",

418

dsn="myhost:1521/myservice",

419

encoding="UTF-8",

420

autocommit=False,

421

call_timeout=30000, # 30 seconds

422

appname="MyApplication",

423

stmtcachesize=50

424

)

425

426

# Use connection

427

with connection.cursor() as cursor:

428

cursor.execute("SELECT COUNT(*) FROM employees")

429

count = cursor.fetchone()[0]

430

print(f"Employee count: {count}")

431

432

connection.close()

433

```

434

435

### Async Connection

436

437

```python

438

import asyncio

439

import oracledb

440

441

async def main():

442

# Create async connection

443

connection = await oracledb.connect_async(

444

user="hr",

445

password="password",

446

dsn="localhost/xepdb1"

447

)

448

449

async with connection.cursor() as cursor:

450

await cursor.execute("SELECT sysdate FROM dual")

451

result = await cursor.fetchone()

452

print(f"Current date: {result[0]}")

453

454

await connection.close()

455

456

# Run async function

457

asyncio.run(main())

458

```