diff options
author | Dominik Picheta <dominikpicheta@gmail.com> | 2015-10-26 21:10:21 +0100 |
---|---|---|
committer | Dominik Picheta <dominikpicheta@gmail.com> | 2015-10-27 11:06:00 +0100 |
commit | 82f3cab1ac02f482dc3de3a41099e1ec0a0819a7 (patch) | |
tree | 4f8f1980e5ed384738f4a9469139af85574807f8 /lib/impure | |
parent | a82b9cbda320be219f426705494a357a45bfa2b2 (diff) | |
download | Nim-82f3cab1ac02f482dc3de3a41099e1ec0a0819a7.tar.gz |
Improved postgres docs and added untestable tests.
Diffstat (limited to 'lib/impure')
-rw-r--r-- | lib/impure/db_postgres.nim | 85 |
1 files changed, 42 insertions, 43 deletions
diff --git a/lib/impure/db_postgres.nim b/lib/impure/db_postgres.nim index 26c131d3e..7e6219465 100644 --- a/lib/impure/db_postgres.nim +++ b/lib/impure/db_postgres.nim @@ -10,60 +10,56 @@ ## A higher level `PostgreSQL`:idx: database wrapper. This interface ## is implemented for other databases also. ## -## **Note**: There are two approaches to **parameter substitution** in this module -## 1. ``SqlQuery`` using ``?,?,?,...`` (same as the other db_xxxx modules) +## Parameter substitution +## ---------------------- ## -## .. code-block:: Nim -## sql"INSERT INTO myTable (colA,colB,colC) VALUES (?,?,?)" -## 2. ``SqlPrepared`` using ``$1,$2,$3,...`` (the Postgres way, using numbered parameters) +## All ``db_*`` modules support the same form of parameter substitution. +## That is, using the ``?`` (question mark) to signify the place where a +## value should be placed. For example: ## -## .. code-block:: Nim -## prepare(theDb, "MyExampleInsert", -## sql"""INSERT INTO myTable -## (colA,colB,colC) -## VALUES ($1,$2,$3)""", -## 3) +## .. code-block:: Nim +## sql"INSERT INTO myTable (colA, colB, colC) VALUES (?, ?, ?)" ## -## Example: +## **Note**: There are two approaches to parameter substitution support by +## this module. ## -## .. code-block:: Nim +## 1. ``SqlQuery`` using ``?, ?, ?, ...`` (same as all the ``db_*`` modules) +## +## 2. ``SqlPrepared`` using ``$1, $2, $3, ...`` +## +## .. code-block:: Nim +## prepare(db, "myExampleInsert", +## sql"""INSERT INTO myTable +## (colA, colB, colC) +## VALUES ($1, $2, $3)""", +## 3) ## -## import db_postgres, math +## Examples +## -------- ## -## let theDb = open("localhost", "nim", "nim", "test") +## Opening a connection to a database +## ================================== ## -## theDb.exec(sql"Drop table if exists myTestTbl") -## theDb.exec(sql("""create table myTestTbl ( -## Id SERIAL PRIMARY KEY, -## Name VARCHAR(50) NOT NULL, -## i INTEGER, -## f NUMERIC(18,10))""")) +## .. code-block:: Nim +## import db_postgres +## let db = open("localhost", "user", "password", "dbname") +## db.close() ## -## var psql: SqlPrepared = theDb.prepare("testSql", -## sql"""INSERT INTO myTestTbl (name,i,f) -## VALUES ($1,$2,$3)""", 3) -## theDb.exec(sql"START TRANSACTION") -## for i in 1..1000: -## if i %% 2 == 0: -## # using Postgres prepared statement (SqlPrepare) -## theDb.exec(psql, "Item#" & $i, $i, $sqrt(i.float)) -## else: -## # using SqlQuery -## theDb.exec(sql"INSERT INTO myTestTbl (name,i,f) VALUES (?,?,?)", -## "Item#" & $i, $i, $sqrt(i.float)) -## theDb.exec(sql"COMMIT") +## Creating a table +## ================ ## -## for x in theDb.fastRows(sql"select * from myTestTbl"): -## echo x +## .. code-block:: Nim +## db.exec(sql"DROP TABLE IF EXISTS myTable") +## db.exec(sql("""CREATE TABLE myTable ( +## id integer, +## name varchar(50) not null)""")) ## -## let id = theDb.tryInsertId(sql"""INSERT INTO myTestTbl -## (name,i,f) -## VALUES (?,?,?)""", -## "Item#1001", 1001, sqrt(1001.0)) -## echo "Inserted item: ", -## theDb.getValue(sql"SELECT name FROM myTestTbl WHERE id=?", id) +## Inserting data +## ============== ## -## theDb.close() +## .. code-block:: Nim +## db.exec(sql"INSERT INTO myTable (id, name) VALUES (0, ?)", +## "Dominik") import strutils, postgres type @@ -382,3 +378,6 @@ proc setEncoding*(connection: DbConn, encoding: string): bool {. ## sets the encoding of a database connection, returns true for ## success, false for failure. return pqsetClientEncoding(connection, encoding) == 0 + + +# Tests are in ../../tests/untestable/tpostgres. \ No newline at end of file |