{"_id":"motor-db","_rev":"28-05de8a5cf89d1b314262f46b9c5e3223","name":"motor-db","description":"Motor para base de datos no neutral","dist-tags":{"latest":"0.1.9"},"versions":{"0.1.0":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.0","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.0","dist":{"shasum":"c35a8aefbd5310a31832f70f66efede3f68e18b3","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.0.tgz","integrity":"sha512-gR3ctMLb24hNy8GtwhB86yHRXAbobD1IWNMdr/M1j8NnSjrT3vSP1D6w0KXxIytbIqE5eJmhMXpr1rONaoN2Dw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDcUbho130Cv8gW8HRIE5oXvkDoiiJonZVP/nAPrjdXeAIhAKg5fpyVuEeFg3kGH5+KDGNHzDmIxESU9q0IWrINmO5O"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.1":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.1","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.1","dist":{"shasum":"182076d047f900b34181cd50f1bd3775fb303223","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.1.tgz","integrity":"sha512-ScEIF0dd0X4aHqFretJhNL7c/3tV8T3nmMfIq7NK9vYr7r5WD4WPoQWh9d+0Hu3kNmB9VU+SpyfrnyiurElCjA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyawNq1Fl9eqr1etDNWiEKLW8rZWNFDWC0b8DkzHPeEAIhAJdDOAQ83nvEaf/QCwrjOXL8fPXpy+cu+V2Y3fYWkpK1"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.2":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.2","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","promise-es6":"0.1.0"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.2","dist":{"shasum":"90447dc04f9b72bd64fae1401f69740f63628013","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.2.tgz","integrity":"sha512-dv9VzCnlHENWuFXa26pi1VUpPb8f/g+5QBsdmkr7BqwJar+2NrQA3Ey7Z/Ll9FRmWvoOjMwaczI1t9Zu4qXQjQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIHyuaoSPuNM0KItG3J07NWVmnx6H6Nkkz6PgVsXZO1smAiEAmrc/lu3leKfJZ1JXIxvcDt49VxRqsZTqUQKjRJmJqBs="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.3":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.3","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","promise-es6":"0.1.0"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.3","dist":{"shasum":"fb217d64e84f2b0a3e9bf671324bed9c6fa13ea3","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.3.tgz","integrity":"sha512-PvKvgtcbmKzfAuiAy194JgfvCw+m2ZAuDUiW5vAXeV6fdLKtx7hLaDziGNZGgzAHQ46bIpO9TclqvQop/tKlhQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC+uIuaCO75Kbxb5Caxo/E3ZDZPAnDkQLy5lzdTGsBmRwIhALwF4njJ+6XoyaEQy4+eiZMUCtk2Vdk7YXieQRWN288Y"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.4":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.4","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","promise-es6":"0.1.0"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.4","dist":{"shasum":"fba61edbe21e60d11e8fd9f1821238dbdedd538b","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.4.tgz","integrity":"sha512-U6X58fi0zy+xTvICfHsWiRgJ4cvlRPaacWQ3b/xelrneMubFY220qjiGpXjBslB0XZbe7aG4Vc5YdMYTQ0omww==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDKlj4dlV23r8fXNYmwOe7XRc6VAZHsevfEjp+kOBGYYQIhAPFNiC0LNUl5Y+xNbG28WS59KQ2Ho2uG5lEePKZxqQs+"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.5":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.5","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","es6-promise":"~1.0.0","mocha":"~1.20.1"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.5","dist":{"shasum":"48492827df5d7671dfd1e93b660f961787aca023","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.5.tgz","integrity":"sha512-tqjK4LO7cPywf/KSwKSJxw/IjhNewxjFlN/GBUTRukOYjWVkYq9cTED2+S7ko0qQ42ZlKehtfqDPw2/tqJqvgQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCQeUTsBpRGmmUzMiNz75P4h5VK5fp/x0j4EWU5CphMTgIhAN7wQ6kYBcwVAGVIdPXiVnNpKSpSEvvrnlB9degZDq63"}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.6":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.6","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","es6-promise":"~1.0.0","mocha":"~1.20.1"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.6","dist":{"shasum":"c89f3a80eaa95b5f09f851e53f4e8495124e5a00","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.6.tgz","integrity":"sha512-TP8VAOWZWd2V/BVbHQ+pusu/4vZcWhFtAzESUqIpImZEdKlH42wQr8Lwi9x5nnEF7jSrt/JRvN33/uXsZXCitQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIB1QgG8X8Uk6B+0BDDibqFI6auIui+QM5ywPJSjN0w+aAiEAmCtUzgb1LH3IrcWZtLM0w9dmBw+HCMukNy2rLI2n7NU="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.7":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.7","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","es6-promise":"~1.0.0","mocha":"~1.20.1"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.7","dist":{"shasum":"b8cf5a7b0e428bfe3890acc007737182addca51c","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.7.tgz","integrity":"sha512-6TAvaTK3ohqh+MaRz3erzKzqNpKGy9wVtpeE702rFxRR8/dO+lKGU4JmMvBXC85COZRzOxVxew+EVbIh5OIM3w==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG+OdUZccRyDFnqyFp7LIL8p9B1Wx12MtCcT+qjYA3bZAiAOquqF9TyWbsrQod6pcv7ZrPojaUsN3SvK9e4ZQ8Cnvg=="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.8":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.8","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","es6-promise":"~1.0.0","mocha":"~1.20.1"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.8","dist":{"shasum":"ddc959bcba31cf171bec51230f1509da6f52c2ec","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.8.tgz","integrity":"sha512-LJwLx95N52uYco/LcodTU1y8b2yXzQJAT1dNGXmpND6OTLy6l1iQ/zlEuZK19G8qy9M2KlTmVpCTb32jlGOFGg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIE+pNvxKHqndrI7h0w/OLDWyIIns6GzgE/yFyuqib5E4AiEAj+Bdx8SLyhhPhuj/M/efsbOnYbPESWxJkg5qv2zIS3w="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}},"0.1.9":{"name":"motor-db","description":"Motor para base de datos no neutral","version":"0.1.9","author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"maintainers":[{"name":"tute","email":"emilioplatzer@outlook.com"}],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"main":"./lib/motor-db","license":"BSD-3","engines":{"node":">= 0.6"},"dependencies":{"colors":"~0.6.2","expect.js":"0.3.1","sqlite3":"2.2.3","mysql":"~2.3.2","pg":"~3.2.0","es6-promise":"~1.0.0","mocha":"~1.20.1"},"scripts":{"test":"mocha"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"homepage":"https://github.com/emilioplatzer/motor-db","_id":"motor-db@0.1.9","dist":{"shasum":"67b872b51c080cdaf7036c0f8188f1f517b0bbce","tarball":"https://registry.npmjs.org/motor-db/-/motor-db-0.1.9.tgz","integrity":"sha512-a0s9phvbiEBa1POE7WFFvxwx80R5+8I+DSq5gi/8lPCNXKT6/lh7rZ+CMl4Xpeh4umFwfpzW4UajcZ3Vlih7pA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDYIpn7BR1zCpxxPC8LEjJKInppLKdH8dRht6GCTYxWiwIgUB0bbIX+z5+W/FbeOonXwvADrbg8Bw9BT/U/79ZE8P0="}]},"_from":".","_npmVersion":"1.4.3","_npmUser":{"name":"tute","email":"emilioplatzer@outlook.com"}}},"readme":"﻿motor-db\n========\n\n[![Build Status](https://travis-ci.org/emilioplatzer/motor-db.svg?branch=master)](https://travis-ci.org/emilioplatzer/motor-db)\n\nMotor de base de datos no neutral para NodeJS. Inicialmente con postgresql, sqlite y mysql. \n\nEl objetivo es poder usar un solo juego de librerías donde se escribe el mismo SQL para todas las bases. \n\nEl funcionamiento es siempre asincrónico basado en **Promise** <https://www.npmjs.org/package/es6-promise>\n\nInstall\n=======\n\n    $ npm install motor-db\n    \nUso\n===\n\n    var motorDb = require('motor-db');\n    \n    var db=motorDb.nuevaConexion({\n        motor:'pg', // postgresql\n        connect:{\n            host: \"localhost\",\n            database: \"para_prueba_db\",\n            user: \"the_user_name\",\n            password: \"the_pass\"\n        }\n    });\n\n    db.ejecutar(\"DROP TABLE IF EXISTS prueba;\").then(function(){\n        return db.ejecutar(\"CREATE TABLE prueba (texto VARCHAR(10), num INTEGER);\");\n    }).then(function(){\n        return db.insertar(\"prueba\", {texto:'este', num:7});\n    }).then(function(resultado){\n        console.log('se insertaron correctamente %d fila(s)',resultado.cambios);\n        return db.fila(\"SELECT * FROM prueba LIMIT 1\");\n    }).then(function(fila){\n        console.log('datos devueltos: %s %d', fila.texto, fila.num);\n    }).catch(function(err){\n        console.log('Hubo un error en el ejemplo',err);\n        throw err;\n    });\n\nManual\n======\n\nmotorDb.nuevaConexion(opciones);\n--------------------------------\n\nConecta y abre una base de datos PostgreSQL, sqlite3 o MySQL. \n\n**Devuelve** una conexión a la base de datos. \n\nHíbridamente asincrónico (o sea no detiene la ejecución pero no tiene función callback ni devuelve una promesa,\nla conexión estará lista cuando se ejecute la primera acción sobre la conexión). \n\nopciones:\n* motor (nombre del motor: `'pg'`, `'sqlite'` o `'mysql'`)\n* connect (string connect que será pasado a la librería de base de datos, en el caso de sqlite3 es un string, \nen los otros casos es un objeto con los siguientes campos: host, database, user, password).\n\nconexion.ejecutar(sql,\\[parametros... \\]);\n--------------------------------\n\nEjecuta una instrucción SQL que no devuelve datos (INSERT, DELETE, UPDATE, CREATE, ALTER, etc). \n\n**Devuelve una promesa** que entrega un objeto `{cambios:x, ultimo_id:y}` \ncon la cuenta de la cantidad de cambios que hubo (ej: cantidad de registros eliminados)\ny el último ID insertado (en el caso de insertar un único registro en una tabla con clave autonumérica). \n\nLos parametros son uno o más objetos con los parámetros de la consulta. \nA diferencia de los placeholders típicos de los drivers comunes de base de datos acá los parámetros pueden \nreferenciarse en forma global. \n\nDada la siguiente llamada a ejecutar\n\n    con.ejecutar(sql,{par1:1, par2:'dos', par3:true}, {otro:new Date(2012,1,13)});\n    \nse creará una llamada a la base donde el string sql recibido como parámetro será completado con nombres de\ncampos y placeholders en forma global. Todos los reemplazadores son de la forma `???`**ALGO**\\#\\_\\_**pref**\\_\\_, \nsiempre empiezan con los tres signos de pregunta, luego **ALGO** puede ser la palabra `CAMPOS`, `PARAMS` o `AND`,\n\\# es un número indicando a cuál grupo de parámetros se refiere \ny **pref** es el prefijo a colocar si se necesita un alias\n\nEjemplos:\n* `???CAMPOS1` es reemplazado por `par1, par2, par3`\n* `???CAMPOS2` es reemplazado por `otro`\n* `???PARAMS1` es reemplazado por `?, ?, ?` o `:par1, :par2, :par3` o la forma que tenga el driver de poner los placeholders\n* `???PARAMS2__pref__` es reemplazado por `? as pref_otro` o `:otro as pref_otro` según el driver\n* `???AND1` es reemplazado por `par1=? AND par2=? AND par3=?`\n\nAdemás de hacer los reemplazos en el SQL se preparará el arreglo u objeto que se pasará como parámetro al driver \nde modo de pasar siempre separados la sentencia y los datos. \n\nconexion.dato(sql,\\[parametros... \\]);\n--------------------------------\n\nEjecuta una consulta que se espera que devuelva una única fila con un único valor (única columna). \n\n**Devuelve una promesa** que entrega un valor. \n\nRecibe el sql y los parámetros con el mismo formato que `ejecutar`.\n\nconexion.fila(sql,\\[parametros... \\]);\n--------------------------------\n\nEjecuta una consulta que se espera que devuelva una única fila\n\n**Devuelve una promesa** que entrega un objeto asociativo con la fila devuelta. \n\nRecibe el sql y los parámetros con el mismo formato que `ejecutar`.\n\nconexion.todo(sql,\\[parametros... \\]);\n--------------------------------\n\nEjecuta una consulta que puede devolver cero o más filas\n\n**Devuelve una promesa** que entrega un arreglo de filas. Cada fila es un objeto asociativo. \n\nRecibe el sql y los parámetros con el mismo formato que `ejecutar`.\n\nconexion.insertar(nombre_tabla,\\[parametros\\],\\[opciones\\]);\n--------------------------------\n\nArma y ejecuta una consulta de inserción sobre la tabla nombre_tabla\n\n**Devuelve una promesa** que entrega un objeto un objeto `{cambios:x, ultimo_id:y}` (según lo que se describe en `ejecutar`). \n\nEsta función no recibe un SQL, lo arma así:\n\n    conexion.insertar('la_tabla', {campo1: 1, campo2: 'a'});\n    \nequivale a:\n\n    conexion.ejecutar('INSERT INTO la_tabla (???CAMPOS1) VALUES (???PARAMS1)', {campo1: 1, campo2: 'a'});\n    \nque a su vez equivale a una llamada al driver nativo a algo parecido a:\n\n    driver.run('INSERT INTO la_tabla (campo1, campo2) VALUES (?, ?)', [1, 'a']);\n\nLas opciones que se pueden especificar (en un arreglo asociativo) son:\n* `devolver_id`: el nombre del campo que tiene el id que se desea que se devuelva al insertar, si no no devuelve el ultimo_id\n* `saltearPorCampos`: si se desea que la inserción sea condicional (o sea que controle de no duplicar registros) \nbasado en los campos especificados (que pueden o no ser una Pk o Uk).\n    \nconexion.cerrar();\n--------------------------------\n\nCierra la conexión con la base de datos\n\nconexion.start(\\[opciones\\]);\n--------------------------------\nComienza una transacción `START TRANSACTION`.\n\nLas opciones que se pueden especificar (en un arreglo asociativo) son:\n* `anidado`: permite anidar transacciones de modo que se envíe un único START TRANSACTION en el bloque más externo\nsi hubiera una excepción o un rollback se cancelan todas las transacciones. \n\nconexion.commit(\\[opciones\\]);\n--------------------------------\nHace un `COMMIT`. Debe especificar en opciones si está dentro de una transacción anidada\n\nconexion.rollback(\\[opciones\\]);\n--------------------------------\nHace un `ROLLBACK`. Debe especificar en opciones si está dentro de una transacción anidada\n\nDialecto SQL\n============\n\nPara poder unificar el dialecto SQL, de modo de escribir la misma sentencia para todos los motores\nlas funciones que hacen consultas a la base intervienen el SQL rechazando y reemplazando partes:\n\n* `LIKE` se rechaza (porque en postgresql es case insensitive y en sqlite y mysqlite sensitive) **usar ILIKE**\n* `nombre_campo INTEGER PRIMARY KEY AUTO_INCREMENT` es la forma de crear un campo autonumérico que sea PK\n* `nombre_campo INTEGER AUTO_INCREMENT UNIQUE` es la formar de crear un campo autonumérico que sea UK (no hay otras maneras)\n* para obtener el valor recién insertado de un autonumérico hay que escribir `INSERT ... RETURNING nombre_campo_auto AS ultimo_id`\n* `TRUE` y `FALSE` se pueden usar como constantes o valores literales booleanos SQL (en sqlite y mysql son reemplazados por 1 y 0 automáticamente)\n* existe el tipo de datos `TIMESTAMP` \n* está recomendado agregar `WITHOUT ROWID` al crear una tabla cuando se usen PK compuestas o no auto numéricas\n \nRunning tests\n=============\n\nLas pruebas se basan en [mocha](http://visionmedia.github.io/mocha/)\n\n    $ npm install\n    $ npm test\n","maintainers":[{"name":"codenautas_owner","email":"emilioplatzer@gmail.com"},{"name":"tute","email":"emilioplatzer@outlook.com"}],"time":{"modified":"2022-06-20T10:12:34.126Z","created":"2014-07-12T14:00:28.670Z","0.1.0":"2014-07-12T14:00:28.670Z","0.1.1":"2014-07-12T14:29:38.985Z","0.1.2":"2014-07-12T19:32:00.832Z","0.1.3":"2014-07-13T00:21:17.383Z","0.1.4":"2014-07-13T00:40:04.329Z","0.1.5":"2014-07-13T01:05:50.056Z","0.1.6":"2014-07-13T02:46:10.370Z","0.1.7":"2014-07-14T02:25:08.303Z","0.1.8":"2014-07-26T23:46:03.229Z","0.1.9":"2014-08-02T17:11:03.354Z"},"homepage":"https://github.com/emilioplatzer/motor-db","keywords":["database","postgresql","mysql","sqlite","sqlite3","sql"],"repository":{"type":"git","url":"https://github.com/emilioplatzer/motor-db.git"},"author":{"name":"Emilio Platzer","email":"emilioplatzer@outlook.com"},"bugs":{"url":"https://github.com/emilioplatzer/motor-db/issues"},"license":"BSD-3","readmeFilename":"README.md"}