Skip to content

Commit eb6767a

Browse files
committed
Connection examples for different DB modules - fix #229
1 parent 6021ed3 commit eb6767a

4 files changed

Lines changed: 328 additions & 5 deletions

File tree

README.md

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,192 @@ Switching Default Alias
9999
Execute Sql String drop table XYZ
100100
```
101101

102+
# Connection examples for different DB modules
103+
<details>
104+
<summary>Oracle (oracle_db)</summary>
102105

106+
```RobotFramework
107+
# Thin mode is used by default
108+
Connect To Database
109+
... oracledb
110+
... db_name=db
111+
... db_user=db_user
112+
... db_password=pass
113+
... db_host=127.0.0.1
114+
... db_port=1521
115+
116+
# Thick mode with default location of the Oracle Instant Client
117+
Connect To Database
118+
... oracledb
119+
... db_name=db
120+
... db_user=db_user
121+
... db_password=pass
122+
... db_host=127.0.0.1
123+
... db_port=1521
124+
... oracle_driver_mode=thick
125+
126+
# Thick mode with custom location of the Oracle Instant Client
127+
Connect To Database
128+
... oracledb
129+
... db_name=db
130+
... db_user=db_user
131+
... db_password=pass
132+
... db_host=127.0.0.1
133+
... db_port=1521
134+
... oracle_driver_mode=thick,lib_dir=C:/instant_client_23_5
135+
```
136+
</details>
137+
138+
<details>
139+
<summary> PostgreSQL (psycopg2) </summary>
140+
141+
```RobotFramework
142+
Connect To Database
143+
... psycopg2
144+
... db_name=db
145+
... db_user=db_user
146+
... db_password=pass
147+
... db_host=127.0.0.1
148+
... db_port=5432
149+
```
150+
</details>
151+
152+
<details>
153+
<summary>Microsoft SQL Server (pymssql)</summary>
154+
155+
```RobotFramework
156+
# UTF-8 charset is used by default
157+
Connect To Database
158+
... pymssql
159+
... db_name=db
160+
... db_user=db_user
161+
... db_password=pass
162+
... db_host=127.0.0.1
163+
... db_port=1433
164+
165+
# Specifying a custom charset
166+
Connect To Database
167+
... pymssql
168+
... db_name=db
169+
... db_user=db_user
170+
... db_password=pass
171+
... db_host=127.0.0.1
172+
... db_port=1433
173+
... db_charset=cp1252
174+
```
175+
</details>
176+
177+
<details>
178+
<summary>MySQL (pymysql)</summary>
179+
180+
```RobotFramework
181+
# UTF-8 charset is used by default
182+
Connect To Database
183+
... pymysql
184+
... db_name=db
185+
... db_user=db_user
186+
... db_password=pass
187+
... db_host=127.0.0.1
188+
... db_port=3306
189+
190+
# Specifying a custom charset
191+
Connect To Database
192+
... pymysql
193+
... db_name=db
194+
... db_user=db_user
195+
... db_password=pass
196+
... db_host=127.0.0.1
197+
... db_port=3306
198+
... db_charset=cp1252
199+
```
200+
</details>
201+
202+
<details>
203+
<summary>IBM DB2 (ibm_db)</summary>
204+
205+
```RobotFramework
206+
Connect To Database
207+
... ibm_db_dbi
208+
... db_name=db
209+
... db_user=db_user
210+
... db_password=pass
211+
... db_host=127.0.0.1
212+
... db_port=50000
213+
```
214+
</details>
215+
216+
<details>
217+
<summary>MySQL via ODBC (pyodbc)</summary>
218+
219+
```RobotFramework
220+
# ODBC driver name is required
221+
# ODBC driver itself has to be installed
222+
Connect To Database
223+
... pyodbc
224+
... db_name=db
225+
... db_user=db_user
226+
... db_password=pass
227+
... db_host=127.0.0.1
228+
... db_port=3306
229+
... odbc_driver={MySQL ODBC 8.0 ANSI Driver}
230+
231+
# Specifying a custom charset if needed
232+
Connect To Database
233+
... pyodbc
234+
... db_name=db
235+
... db_user=db_user
236+
... db_password=pass
237+
... db_host=127.0.0.1
238+
... db_port=3306
239+
... odbc_driver={MySQL ODBC 8.0 ANSI Driver}
240+
... db_charset=latin1
241+
```
242+
</details>
243+
244+
<details>
245+
<summary>Oracle via JDBC (jaydebeapi)</summary>
246+
247+
```RobotFramework
248+
# Username and password must be set as a dictionary
249+
VAR &{CREDENTIALS} user=db_user password=pass
250+
251+
# JAR file with Oracle JDBC driver is required
252+
# Jaydebeapi is not "natively" supported by the Database Library,
253+
# so using the custom parameters
254+
Connect To Database
255+
... jaydebeapi
256+
... jclassname=oracle.jdbc.driver.OracleDriver
257+
... url=jdbc:oracle:thin:@127.0.0.1:1521/db
258+
... driver_args=${CREDENTIALS}
259+
... jars=C:/ojdbc17.jar
260+
```
261+
</details>
262+
263+
<details>
264+
<summary>SQLite (sqlite3)</summary>
265+
266+
```RobotFramework
267+
# Using custom parameters required
268+
Connect To Database
269+
... sqlite3
270+
... database=./my_database.db
271+
... isolation_level=${None}
272+
```
273+
</details>
274+
275+
<details>
276+
<summary>Teradata (teradata)</summary>
277+
278+
```RobotFramework
279+
Connect To Database
280+
... teradata
281+
... db_name=db
282+
... db_user=db_user
283+
... db_password=pass
284+
... db_host=127.0.0.1
285+
... db_port=1025
286+
```
287+
</details>
103288

104289
# Using configuration file
105290
The `Connect To Database` keyword allows providing the connection parameters in two ways:
@@ -224,6 +409,8 @@ using the `Set Auto Commit` keyword.
224409
This has no impact on the automatic commit/rollback behavior in library keywords (described above).
225410
226411
# Database modules compatibility
412+
> Looking for [Connection examples for different DB modules](#connection-examples-for-different-db-modules)?
413+
227414
The library is basically compatible with any [Python Database API Specification 2.0](https://peps.python.org/pep-0249/) module.
228415
229416
However, the actual implementation in existing Python modules is sometimes quite different, which requires custom handling in the library.

doc/index.html

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

src/DatabaseLibrary/__init__.py

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,140 @@ class DatabaseLibrary(ConnectionManager, Query, Assertion):
117117
| Execute Sql String drop table XYZ
118118
|
119119
120+
= Connection examples for different DB modules =
121+
== Oracle (oracle_db) ==
122+
| # Thin mode is used by default
123+
| Connect To Database
124+
| ... oracledb
125+
| ... db_name=db
126+
| ... db_user=db_user
127+
| ... db_password=pass
128+
| ... db_host=127.0.0.1
129+
| ... db_port=1521
130+
|
131+
| # Thick mode with default location of the Oracle Instant Client
132+
| Connect To Database
133+
| ... oracledb
134+
| ... db_name=db
135+
| ... db_user=db_user
136+
| ... db_password=pass
137+
| ... db_host=127.0.0.1
138+
| ... db_port=1521
139+
| ... oracle_driver_mode=thick
140+
|
141+
| # Thick mode with custom location of the Oracle Instant Client
142+
| Connect To Database
143+
| ... oracledb
144+
| ... db_name=db
145+
| ... db_user=db_user
146+
| ... db_password=pass
147+
| ... db_host=127.0.0.1
148+
| ... db_port=1521
149+
| ... oracle_driver_mode=thick,lib_dir=C:/instant_client_23_5
150+
== PostgreSQL (psycopg2) ==
151+
| Connect To Database
152+
| ... psycopg2
153+
| ... db_name=db
154+
| ... db_user=db_user
155+
| ... db_password=pass
156+
| ... db_host=127.0.0.1
157+
| ... db_port=5432
158+
== Microsoft SQL Server (pymssql) ==
159+
| # UTF-8 charset is used by default
160+
| Connect To Database
161+
| ... pymssql
162+
| ... db_name=db
163+
| ... db_user=db_user
164+
| ... db_password=pass
165+
| ... db_host=127.0.0.1
166+
| ... db_port=1433
167+
|
168+
| # Specifying a custom charset
169+
| Connect To Database
170+
| ... pymssql
171+
| ... db_name=db
172+
| ... db_user=db_user
173+
| ... db_password=pass
174+
| ... db_host=127.0.0.1
175+
| ... db_port=1433
176+
| ... db_charset=cp1252
177+
== MySQL (pymysql) ==
178+
| # UTF-8 charset is used by default
179+
| Connect To Database
180+
| ... pymysql
181+
| ... db_name=db
182+
| ... db_user=db_user
183+
| ... db_password=pass
184+
| ... db_host=127.0.0.1
185+
| ... db_port=3306
186+
|
187+
| # Specifying a custom charset
188+
| Connect To Database
189+
| ... pymysql
190+
| ... db_name=db
191+
| ... db_user=db_user
192+
| ... db_password=pass
193+
| ... db_host=127.0.0.1
194+
| ... db_port=3306
195+
| ... db_charset=cp1252
196+
== IBM DB2 (ibm_db) ==
197+
| Connect To Database
198+
| ... ibm_db_dbi
199+
| ... db_name=db
200+
| ... db_user=db_user
201+
| ... db_password=pass
202+
| ... db_host=127.0.0.1
203+
| ... db_port=50000
204+
== MySQL via ODBC (pyodbc) ==
205+
| # ODBC driver name is required
206+
| # ODBC driver itself has to be installed
207+
| Connect To Database
208+
| ... pyodbc
209+
| ... db_name=db
210+
| ... db_user=db_user
211+
| ... db_password=pass
212+
| ... db_host=127.0.0.1
213+
| ... db_port=3306
214+
| ... odbc_driver={MySQL ODBC 8.0 ANSI Driver}
215+
|
216+
| # Specifying a custom charset if needed
217+
| Connect To Database
218+
| ... pyodbc
219+
| ... db_name=db
220+
| ... db_user=db_user
221+
| ... db_password=pass
222+
| ... db_host=127.0.0.1
223+
| ... db_port=3306
224+
| ... odbc_driver={MySQL ODBC 8.0 ANSI Driver}
225+
| ... db_charset=latin1
226+
== Oracle via JDBC (jaydebeapi) ==
227+
| # Username and password must be set as a dictionary
228+
| VAR &{CREDENTIALS} user=db_user password=pass
229+
|
230+
| # JAR file with Oracle JDBC driver is required
231+
| # Jaydebeapi is not "natively" supported by the Database Library,
232+
| # so using the custom parameters
233+
| Connect To Database
234+
| ... jaydebeapi
235+
| ... jclassname=oracle.jdbc.driver.OracleDriver
236+
| ... url=jdbc:oracle:thin:@127.0.0.1:1521/db
237+
| ... driver_args=${CREDENTIALS}
238+
| ... jars=C:/ojdbc17.jar
239+
== SQLite (sqlite3) ==
240+
| # Using custom parameters required
241+
| Connect To Database
242+
| ... sqlite3
243+
| ... database=./my_database.db
244+
| ... isolation_level=${None}
245+
== Teradata (teradata) ==
246+
| Connect To Database
247+
| ... teradata
248+
| ... db_name=db
249+
| ... db_user=db_user
250+
| ... db_password=pass
251+
| ... db_host=127.0.0.1
252+
| ... db_port=1025
253+
120254
= Using configuration file =
121255
The `Connect To Database` keyword allows providing the connection parameters in two ways:
122256
- As keyword arguments

src/DatabaseLibrary/connection_manager.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,11 +230,13 @@ def connect_to_database(
230230
231231
*The old parameters will be removed in future versions.*
232232
233-
=== Examples ===
234-
| Connect To Database | psycopg2 | my_db | user | pass | tiger.foobar.com | 5432 |
235-
| Connect To Database | psycopg2 | my_db | user | pass | tiger.foobar.com | 5432 | my_custom_param=value |
236-
| Connect To Database | psycopg2 | my_db | user | pass | tiger.foobar.com | 5432 | alias=my_alias |
233+
== Basic examples ==
234+
| Connect To Database | psycopg2 | my_db | user | pass | 127.0.0.1 | 5432 |
235+
| Connect To Database | psycopg2 | my_db | user | pass | 127.0.0.1 | 5432 | my_custom_param=value |
236+
| Connect To Database | psycopg2 | my_db | user | pass | 127.0.0.1 | 5432 | alias=my_alias |
237237
| Connect To Database | config_file=my_db_params.cfg |
238+
239+
See `Connection examples for different DB modules`.
238240
"""
239241
config = ConfigReader(config_file, alias)
240242

0 commit comments

Comments
 (0)