nodejs连接postgreSQL数据库

news/2024/7/9 22:02:53 标签: pool, postgresql, 数据库, nodejs, 连接池

nodejs连接pg数据库有两种方式,一种是直接连接、操作、断开

还有一种是使用连接池,这种方式可以有效提升多并发的效率

下边是使用两种不同方式的测试代码:

 

var pgOpt = require('pg');
/*
 * 使用连接池
 * */
function connectPgWithPool() {
    var pgConfig = {
        user: 'postgres',
        database: 'postgres',
        password: '123456',
        host: '192.168.1.234',
        port: '5432',
        poolSize: 5,
        poolIdleTimeout: 30000,
        reapIntervalMillis: 10000
    };
    var pgPool = new pgOpt.Pool(pgConfig);
    // var pgPool = new pgOpt.pools.getOrCreate(pgConfig);// 低版本的pg模块需要这样来创建连接池
    
    pgPool.connect(function (isErr, client, done) {
        if (isErr) {
            console.log('connect query:' + isErr.message);
            return;
        }
        client.query('select now();', [], function (isErr, rst) {
            done();
            if (isErr) {
                console.log('query error:' + isErr.message);
            } else {
                console.log('query success, data is: ' + rst.rows[0].now);
            }
        })
    });
}
/** 不使用连接池* */
function connectPgWithoutPool() {
    var conStr = "postgres://postgres:123456@192.168.1.234:5432/postgres";
    var client = new pgOpt.Client(conStr);
    client.connect(function (isErr) {
        if (isErr) {
            console.log('connect error:' + isErr.message);
            client.end();
            return;
        }
        client.query('select now();', [], function (isErr, rst) {
            if (isErr) {
                console.log('query error:' + isErr.message);
            } else {
                console.log('query success, data is: ' + rst.rows[0].now);
            }
            client.end();
        })
    })
}
connectPgWithPool();
//connectPgWithoutPool();

 

 

 

 

 


http://www.niftyadmin.cn/n/1727564.html

相关文章

Flink内核源码(五)控制任务调度:作业链与处理槽共享组

第五章就来从源码层面学习一下Flink的控制任务调度——作业链与处理槽共享组。 问题整理: 1. 什么是任务链?作业链怎么操作? 2. 什么是槽共享组?slot共享机制是怎么实现的? 3. 如何通过调整默认行为以及控制作业链与…

postgresql数据库 如果存在则更新(update),如果不存在则插入(insert)

格式:insert into ...... on conflict(column_name) do ...... 例子: uxdb# create table tbl_c (id int unique, name varchar(2)); CREATE TABLE uxdb# insert into tbl_c values (1, a); INSERT 0 1 uxdb# table tbl_c;id | name ----------1 | a (1…

Flink内核源码(六)状态容错与两阶段提交

第六章就来学习一下Flink的状态(Checkpoint和Savepoint)容错与两阶段提交。 问题整理: 1. 什么是Flink的状态?状态后端?状态容错机制? 2. 什么是Flink的Checkpoints? 3. 什么是Flink的Savepoints? 4. Fli…

虚拟机和实体机IP不在一个网段内,而且无法设置在一个网段内

这种现象多半是因为虚拟机的网络适配器选择了:“NAT模式(N):用于共享主机的IP地址” 如果是这样则修改成:“桥接模式(B):直接连接物理网络”然后重启虚拟机,再把IP设置成和主机在一个网段内,再重启网卡:service networ…

在CentOS6.7上搭建邮箱服务器(postfix+dovecot)

这两天尝试搭建了本地邮箱服务器,采用postfixdovecot模式,网上有好多教程,但都是缺胳膊少腿,没一个完整的,下边就本人此次搭建过程做一个详细记录。 首先准备一个干净环境的虚拟机CentOS6.7(6.x都行,只要是…

华为机试:单词搜索(找到它)

【编程题目 |200分】 单词搜索【2021 H2, 2022 Q1,Q2 考试题】 题目描述 找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。 假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词&a…

postgreSQL数据库 向表中快速插入1000000条数据

不用创建函数,直接向表中快速插入1000000条数据 create table tbl_test (id int, info text, c_time timestamp); insert into tbl_test select generate_series(1,100000),md5(random()::text),clock_timestamp(); select count(id) from tbl_test; --查看个数据条…

华为机试:找城市

【编程题目 |200分】 找城市【2022 Q1,Q2 考试题】 题目描述 一个城市规划问题,一个地图有很多城市,两个城市之间只有一种路径,切断通往一个城市i的所有路径之后,其他的城市形成了独立的城市群,这些城市群里最大的城…