一个用于node.js上的,基于pg/pg-native/pg-pool的一个PostgreSQL数据库操作库。
设计目标是:用更少的代码,写出更直观的(复杂)查询。
比如:
* await db.table(table).add(data). 在insert into 之后,自动检测是否有主键,主键是否是序列,如果是,返回ID。否则返回影响的行数。如果`table`表中有`create_at`字段,会自动填充`NOW()`。
* await db.table(table).where(condition).find(). 自动在SQL中追加`limit 1`,并返回rows[0]或null。
* await db.table(table).where(condition).getField(field). 自动在SQL中追加`limit 1`,并返回rows[0][field]或null。
使用类似ThinkPHP的语法,去操作PostgreSQL数据库。
> 可来这里https://runkit.com/blusewang/postgre-sql-play先过手瘾。
库本身已经包含了连接池功能。所以可以直接连接PostgreSQL不必经过pgbouncer。
可以在业务里按需要在三个不同的级别自由切换。更灵活更高效。
有了连接池可以很好的避免因为node.js过载产生的连锁反应,波及到PostgreSQL数据库。
npm i postgre-sql
const {connect} = require('postgre-sql'); connect({user:'postgres',database:'test',max:2,idleTimeoutMillis:100});
const {client} = require('postgre-sql'); let db = new client(); (async ()=>{ try{ let res = await db.table('public.users') .where({vip:true},"create_at>'2017-01-01' and coordinate <-> point(116,39) < 1") .field('uid,user_name').order('uid desc').page(2).select(); // res -> [{uid:34,use_name:'alice'},{uid:35,user_name:'david'}...] }catch (e){ // something else } try{ await db.begin(); let new_uid = await db.table('public.users').add({user_name:'charles'}); await db.commit(); }catch (e){ db.rollback(); } })();
默认是statement
模式,这个模式的语句会平均负载到池中所有的连接。适合并行查询!
会话模式会根据业务自动调整。
statement
const {client} = require('postgre-sql'); let db = new client(); (async ()=>{ try{ let res = await db.table('public.users') .where({vip:true},"create_at>'2017-01-01' and coordinate <-> point(116,39) < 1") .field('uid,user_name').order('uid desc').page(2).select(); // res -> [{uid:34,use_name:'alice'},{uid:35,user_name:'david'}...] }catch (e){ // something else } })();
session
const {client} = require('postgre-sql'); let db = new client(); (async ()=>{ try{ await db.connect(); let res = await db.table('public.users') .where({vip:true},"create_at>'2017-01-01' and coordinate <-> point(116,39) < 1") .field('uid,user_name').order('uid desc').page(2).select(); // res -> [{uid:34,use_name:'alice'},{uid:35,user_name:'david'}...] await db.release(); // Attention! if connection a session don't forget release it! }catch (e){ await db.release(); // Attention! if connection a session don't forget release it! // something else } })();
transaction
const {client} = require('postgre-sql'); let db = new client(); (async ()=>{ try{ await db.begin(); let new_uid = await db.table('public.users').add({user_name:'charles'}); await db.commit(); // Attention! if start a transaction don't forget finish it! }catch (e){ db.rollback(); // Attention! if start a transaction don't forget finish it! } })();
如果表中有create_at
、update_at
、delete_at
。在CUD的操作中会自动填充NOW()
。
软删除只在db.table(tableName).where(conditions).delete();
时影响结果。
在SELECT
类型的语句中,不会主动识,别并剔除delete_at
非空的记录。需要手动写在conditions
中。
更多姿势,见:https://github.com/blusewang/postgre-sql/blob/master/test/main.test.js
查看当前使用postgrs 的版本 select version(); 查看当前日期 select current_date; postgres 的psql:(执行psql就可以进入以下的命令模式,可以使用man psql查看帮助文档) postgres 的命令以“\”开头.提升了很多的SQL命令如下: 显示帮助文档: mydb=> \h 离开psql命令模式: mydb=> \q 创建数据表 C
//客户端查询 public void pgsearchclient(HttpContext context, string starttime, string endtime, int page, int rows, string phone,string province) { endtime = Convert.ToDateTime(endtime).AddDays(1).ToString(
1.sqlserver----sql语句: select * from DCS_RISK where 1=1 and SUPERINTENDENT_DPT_ID IN (select ID FROM ORG_DEPARTMENT WHERE CODEPATH LIKE'03.03.%') AND STATUS_NAME ='已确认' AND ISNULL(IS_CLOSED,0)=0
删除表格 DROP TABLE table_name; 新增字段 ALTER TABLE IF EXISTS table_name ADD COLUMN column_name datatype; datatype可以为比如 varchar(255),int4,text这些。 需要新增多列时: ALTER TABLE IF EXISTS table_name ADD COLUMN column_n
1.时间比较 SELECT * FROM "emp" WHERE update_time > timestamp '2019-09-05 10:00:00' and update_time < timestamp '2019-09-05 15:00:00'
聚合查询后,一个ID 对应多个结果,拼接成一个字段 SELECT ol.user_id, array_to_string( ARRAY ( SELECT UNNEST ( ARRAY_AGG ( ol.org_id ) ) ORDER BY 1 ), ',' ) AS org_ids, array_to_string( ARRAY ( SELECT UNNEST ( ARRAY_AGG (
PostgreSQL的基本使用 认识PG PG的下载和安装 登录 #psql -h 服务器 -U 用户名 -d 数据库 -p 端口地址 // -U 是大写 psql -U dbuser -d exampledb -h 127.0.0.1 -p 5432 $ psql (连接数据库,默认用户和数据库都是postgres) #相当于系统用户postgres以同名数据库用户的身份,登录数据库,这
Postgre SQL 资料 这些特性,Postgre SQL秒杀其他数据库
好的,我可以帮你写一个Python连接Postgre数据库并将结果写入MySQL库的代码。在写代码之前,我们需要确保你已经安装了以下几个模块: psycopg2 - 用于连接PostgreSQL数据库的模块 MySQL Connector - 用于连接MySQL数据库的模块 在安装这两个模块之后,我们就可以开始写代码了。首先,我们需要连接PostgreSQL数据库,然后执行一条SQL语句。下面是连
– 查询当前连接 select * from pg_stat_activity; –查询最大连接数 show max_connections; – 释放空闲连接 SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE state=‘idle’;
1.工具简要说明 自动生成SQL脚本文件,自动针对docker运行容器形式的PG数据库进行数据模拟插入。可以以此为基础进行脚本改造,达到模拟大数据的用途。源码的写法比较土,后面有空可以优化一下代码。 2.工具源码 python文件名:init_db.py #!/usr/bin/python #create time: 2022/03/12 by epic import os; def get_
数据库的操作是每个phpweb框架的核心功能,我们提供数据库数据库的标准调用模式为: 你可以执行严格模式,也就是左边的那条线,Controller->Service->Dao->Model->DB,也可以走简单模式 Controller->Model->DB。个人根据自己的需求,走标准麻烦些(几乎所有的机构和系统都是这样^_^), 但是扩展性会好些,但是使用简单模式开发效率就会高些,性能会好些,但
这一小节是对数据库操作做一个简单的封装,不涉及复杂的事务操作等。 我选用了Sql2o作为底层数据库框架作为支持,它的简洁易用性让我刮目相看,后面我们也会写如何实现一个ORM框架。 /** * 数据库支持 * @author biezhi * */ public final class MarioDb { private static Sql2o sql2o = null;
NoSQL(Not Only SQL),指的是非关系型的数据库。随着Web2.0的兴起,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。 而Go语言作为21世纪的C语言,对NOSQL的支持也是很好,目前流行的NOSQL主要有redis、mongoD
由于我们的框架目前只支持使用mysql,如果使用其他数据库,则不建议使用本框架。本节将介绍如何读取mysql数据库中的数据。 首先需要修改配置文件 App1/Config/Config.php //默认Mysql数据库 'default_mysql_config' => 'mysql', //Mysql1数据库配置 'mysql' => array( 'host' => 'localhost
phpGrace Db 概述 phpgrace db 操作类以pdo为基础、全面采用预处理机制、最大程度保证了数据操作的安全性。采用了单利模式,保证一库一连、一表一对象!为高效开发提供了基础。 大部分的数据操作都无需编写复杂的sql命令,简单配置即可。 准备工作:数据库信息配置 使用数据库操作前,请打开保证数据库配置正确!具体操作见上一节 ^_^ 数据操作详解 下文将以数据表 persons为例,
创建表 查看表结构 查看表详细结构 修改表名 修改字段的数据类型 修改字段名 增加字段 删除字段 删除关联表 (1)删除表的外键约束 (2)删除没有被关联的普通表 (3)删除被其他表关联的父表 创建表: CREATE TABLE 表名 (属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件], 属性名 数据类型 [完整性约束条件]) “完整性约束条件”是指指定某些字段的某些特
本文向大家介绍Python对数据库操作,包括了Python对数据库操作的使用技巧和注意事项,需要的朋友参考一下 Windows下安装MySQL-python 下载地址:https://pypi.python.org/pypi/MySQL-python/1.2.5 安装到系统即可。 linux下安装MySQL-python以连接MySQL: 下载地址:https://pypi.python.org/
本文向大家介绍python操作mysql数据库,包括了python操作mysql数据库的使用技巧和注意事项,需要的朋友参考一下 一、数据库基本操作 1. 想允许在数据库写中文,可在创建数据库时用下面命令 create database zcl charset utf8; 2. 查看students表结构 desc students; 3. 查看创建students表结构的语句 show creat