基于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()
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。
相關文章
Postgresql根據響應數據反向實現(xiàn)建表語句與insert語句的過程
根據已有數據,可構建名為products的表,包含id(自增主鍵)、title(非空字符串)、progress(非空整數)三個字段,建表后,可通過insert語句插入數據,這種反向操作有助于從現(xiàn)有數據結構出發(fā),快速構建數據庫表,并進行數據填充,感興趣的朋友跟隨小編一起看看吧2022-02-02
在postgreSQL中運行sql腳本和pg_restore命令方式
這篇文章主要介紹了在postgreSQL中運行sql腳本和pg_restore命令方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
Linux CentOS 7源碼編譯安裝PostgreSQL9.5
這篇文章主要為大家詳細介紹了Linux CentOS 7源碼編譯安裝PostgreSQL9.5的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-11-11
使用PostGIS完成兩點間的河流軌跡及流經長度的計算(推薦)
這篇文章主要介紹了使用PostGIS完成兩點間的河流軌跡及流經長度的計算,使用POSTGIS及其擴展pgrouting計算給定兩點間的河流流經區(qū)域和河流長度,需要的朋友可以參考下2022-01-01
PostgreSQL 對IN,EXISTS,ANY/ALL,JOIN的sql優(yōu)化方案
這篇文章主要介紹了PostgreSQL 對IN,EXISTS,ANY/ALL,JOIN的sql優(yōu)化方案,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
PostgreSQL使用jsonb進行數組增刪改查的操作詳解
有時候我們需要使用PostgreSQL這種結構化數據庫來存儲一些非結構化數據,PostgreSQL恰好又提供了json這種數據類型,這里我們來簡單介紹使用jsonb的一些常見操作,需要的朋友可以參考下2024-03-03

