基于postgreSql 常用查询小结

1. 日期格式转化(参考

select beg_time, end_time, extract(epoch from to_timestamp(end_time,'yyyy-mm-dd-HH24-MI-SS-US'))-extract(epoch from to_timestamp(beg_time,'yyyy-mm-dd-HH24-MI-SS-US')) from cdb_all_iu_data where beg_time > '2017-09-21' 

注:beg_time, end_time以TEXT形式存储,求时间差时转化为时间戳再相减得到结果(s)

2. select * from (中间结果) t

select count(*) from (
select chkid, count(*) from abc_table GROUP BY chkid) t

补充:自己写的postgreSQL查询语句

我就废话不多说了,大家还是直接看代码吧~

import psycopg2
class PostgreConn():
  '''
  数据库连接类
  '''
  def __init__(self, database, user, password, host, port):
    self.conn = psycopg2.connect(database=database, user=user, password=password, host=host, port=port)
    print('数据库连接成功')
    self.cur = self.conn.cursor()
    self.rows = None

  def cur(self):
    return self.cur()

  def execute(self, sql, fetchone=0):
    self.cur.execute(sql)
    if fetchone:
      self.rows = self.cur.fetchone()
    else:
      self.rows = self.cur.fetchall()
    return self.rows

  def close(self):
    self.cur.close()
    self.conn.close()
    print('数据库连接关闭') 

def select_sql(table, keys, conditions, isdistinct=0):
  '''
    生成select的sql语句
  @table,查询记录的表名
  @key,需要查询的字段
  @conditions,插入的数据,字典
  @isdistinct,查询的数据是否不重复
  '''
  if isdistinct:
    sql = 'SELECT distinct %s ' % ",".join(keys)
  else:
    sql = 'SELECT %s ' % ",".join(keys)
  sql += ' from %s ' % table
  if conditions:
    sql += ' WHERE %s ' % dict_str_and(conditions)
  return sql 

def dict_str_and(dictin):
  '''
  将字典变成,key='value' and key='value'的形式
  '''
  tmplist = []
  for k, v in dictin.items():
    tmp = "%s='%s'" % (str(k), str(v))
    tmplist.append(' ' + tmp + ' ')
  return ' and '.join(tmplist) 

def fSqlResult(r,key_list):
  '''
  :param r: 数据库fetchall的结果
  :param key_list: 查询字段的keys
  :return:
  format SQL Result 格式化数据库查询的结果,转化成包含多个字典的列表格式,即((1,2),(3,4))->[{"key1":1,"key2":2},{"key1":3,"key2":4}]
  返回 @dict 查询结果
  '''
  mlist=[]
  l=len(key_list)
  if r:
    for item in r:
      tmp={}
      for i in range(l):
        tmp[key_list[i]]=str(item[i])
      mlist.append(tmp)
  return mlist 

conn = PostgreConn('settle', 'admin', 'settle8', '123.57.285.89', '5432')
key_list = ['user_id']
sql = select_sql('st_user', key_list, {'phone': '138****'})
print(sql)
r = conn.execute(sql)
re = fSqlResult(r, key_list)
print(re)
conn.close()

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • Visual Studio Code(VS Code)查询PostgreSQL拓展安装教程图解

    1.打开VS Code拓展,搜索postgresql,这时就可以看到在线的支持postgresql的插件,这里我选择的第一个插件(下载量最多的): 2.安装postgresql插件,安装完成之后,在左侧就可以看到插件图标: 3.点击插件,输入连接地址.用户.密码.端口等建立数据库连接(本地已经创建连接,点击 + 添加新的连接): 3.连接上以后测试数据及结果如下: create table test (id int primary key, name varchar, create_date t

  • postgresql 查询字符串中是否包含某字符的操作

    先看表结构和数据: 需求: 查询出manager_id中包含某些字符的数据,此处查询manager_id包含6651545956882725395,5722501350582149881的数据, SQL语句如下: SELECT t.* from bas_cm_customer t where position('6651545956882725395' in t.manager_id) > 0 OR position ('5722501350582149881' in t.manager_id)

  • PostgreSQL 慢查询SQL跟踪操作

    PostgreSQL 开启慢SQL捕获在排查问题时是个很有效的手段.根据慢SQL让我在工作中真正解决了实际问题,很有帮助. PostgreSQL 日志支持的输出格式有 stderr(默认).csvlog .syslog 一般的错误跟踪,只需在配置文件 [postgresql.conf]简单设置几个参数,当然还有错误级别等要设置. logging_collector = on log_destination = 'stderr' log_directory = 'log' log_filename

  • 基于postgresql查询某个字段属于哪个表的说明

    一.场景还原 前端小林问我,它从前端的返回的某些字段,想知道那个表有这个字段,它想操作这个表-- 二.sql语句 SELECT * FROM information_schema. COLUMNS WHERE COLUMN_NAME = 'storename'; SELECT c.relname AS "表名",a.attname AS "字段名",c.oid FROM pg_class c LEFT JOIN pg_attribute a ON a.attreli

  • PostgreSQL 实现给查询列表增加序号操作

    利用 ROW_NUMBER() over( ) 给查询序列增加排序字段 SELECT ROW_NUMBER() over(ORDER bY biztypename DESC ) AS num,biztypename FROM (SELECT DISTINCT biztypename FROM bizmaptype) t; 效果如下: 补充:PostgreSql 使用自定义序列(Sequence)向表插入数据 id 自增长 按照以往Oracle建表的流程,我们来新建表,并且向表中导入数据. 1.创

  • PostgreSQL 实现子查询返回多行的案例

    作为一个表达式使用的子查询返回了多列: 在查询中,我们需要以第2条查询语句作为第一条查询语句的条件,但是第一条根据这个条件查询出来是多个数据,这时候又需要保留多个数据,运用子查询就会报错, 以下就为解决这种多对多关系查询,且没有关联关系的表的解决方案: select c.rain_value,c.ad_nm from ( select *, json::json->t2.lon_lat as rain_value from actual_time_model_json t1, (SELECT D

  • 基于postgreSql 常用查询小结

    1. 日期格式转化(参考) select beg_time, end_time, extract(epoch from to_timestamp(end_time,'yyyy-mm-dd-HH24-MI-SS-US'))-extract(epoch from to_timestamp(beg_time,'yyyy-mm-dd-HH24-MI-SS-US')) from cdb_all_iu_data where beg_time > '2017-09-21' 注:beg_time, end_ti

  • postgresql 常用SQL语句小结

    目录 1.查询链接数 2.查看死锁状态 3.删除死锁进程 4.备份数据库 5.还原数据库 6.插入数据 插入单条数据 插入多条数据 从一张表查询到的数据插入到另一张表 7 .查询pg中单张表的大小(不包含索引) 8.查询数据库中所有表的大小 9.按顺序查看索引 10 .查询数据库的大小 11.查询被锁定的表 12 .查询一个Schema下面的所有表的总大小(单位MB,包括索引和数据) 14 .查询表大小按大小排序并分离data与index 1.查询链接数 SELECT sum(numbacken

  • Selenium Webdriver元素定位的八种常用方式(小结)

    在使用selenium webdriver进行元素定位时,通常使用findElement或findElements方法结合By类返回的元素句柄来定位元素.其中By类的常用定位方式共八种,现分别介绍如下. 1. By.name() 假设我们要测试的页面源码如下: <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><

  • 基于PostgreSQL/openGauss 的分布式数据库解决方案

    在 MySQL ShardingSphere-Proxy 逐渐成熟并被广泛采用的同时,ShardingSphere 团队也在 PostgreSQL ShardingSphere-Proxy 上持续发力.相比前期的 alpha 与 beta,5.0.0 正式版对 PostgreSQL 的协议实现.SQL 支持度.权限控制等方面进行了大量的完善,为后续全面对接 PostgreSQL 生态打下基础.ShardingSphere-Proxy 与 PostgreSQL 的生态对接,让用户能够在 Postg

  • JS常用函数和常用技巧小结

    学习和工作的过程中总结的干货,包括常用函数.常用js技巧.常用正则表达式.git笔记等.为刚接触前端的童鞋们提供一个简单的查询的途径,也以此来缅怀我的前端学习之路. Ajax请求 jquery ajax函数 我自己封装了一个ajax的函数,代码如下: var Ajax = function(url, type success, error) { $.ajax({ url: url, type: type, dataType: 'json', timeout: 10000, success: fu

  • ubuntu下linux常用指令小结

    来实验室将近一个月,几乎没碰window,一直在ubuntu下开发,然后想总结一下最近常用的linux指令. (0) su和sudo:得到root权限 su 切换到root用户 sudo command 切换到root用户,执行command,然后切换回当前用户 su liaohuqiang 切换回普通用户 (1) apt:用于安装软件包 apt list 根据名称列出软件包 apt show 显示软件包细节 sudo apt install 安装软件包 sudo apt remove 卸载软件

  • Linux操作系统操作MySQL常用命令小结

    下面给大家分享mysql常用命令, -- 启动数据库 service myslqd start; -- 进入MySQL -u root -p/mysql -h localhost -u root -p DatabaseName; -- 列出数据库 show database; -- 创建数据库 create database XXXX; -- 选择数据库 use DatabaseName; -- 罗列表 show table; -- 显示表格的属性 show columns from table

  • centos7下搭建ZooKeeper3.4中间件常用命令小结

    一.下载解压 1.Zookeeper简介 Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化.通过监控这些数据状态的变化,从而可以达到基于数据的集群管理. 2.下载 环境版本 centos7 zookeeper 3.4.14 [root@localhost mysoft]$ cd /usr/local

  • 基于PostgreSQL和mysql数据类型对比兼容

    1.数值类型 整数: mysql中的整数类型和pg相比,两者有以下区别: mysql:mysql中支持int 1,2,3,4,8 字节,同时支持有符号,无符号.并且mysql中支持在数值列中指定zerofill,用来将存储的数值通过填充0的方式达到指定数据类型的长度(mysql8开始不建议使用ZEROFILL属性,并且在将来的MySQL版本中将不再支持该属性). pg:pg支持 int 2,4,8 字节,且数值都是有符号的. mysql整数类型: pg整数类型: 那么对于mysql中的1,3字节

随机推荐