SQLUtil.py 1.6 KB
# coding=utf-8
#author:        4N
#createtime:    2021/6/29
#email:         nheweijun@sina.com


class SQLUtil:


    @classmethod
    def get_table_count(cls,table_name,db_session):
        count_result = db_session.execute('''SELECT reltuples::bigint AS ec FROM pg_class WHERE  oid = 'public."{}"'::regclass'''.format(
            table_name)).fetchone()
        count = count_result[0]
        if count< 1000000:
            count_result = db_session.execute('select count(*) from "{}"'.format(table_name)).fetchone()
            count=count_result[0]
        return count

    @classmethod
    def rename(cls,session,origin,after_name):
        rename_sql = 'alter table "{}" rename to "{}"'.format(origin, after_name)
        session.execute(rename_sql)
        session.commit()

    @classmethod
    def check_table_privilege(cls,table_name,pri_type,user,session):
        '''
        判断用户是否对表具有权限
        :param table_name:
        :param pri_type:
        :param user:
        :param pg_ds:
        :return:
        '''
        pri = session.execute("select * from information_schema.table_privileges "
                              "where grantee='{}' and table_name='{}' and privilege_type='{}' "
                              .format(user,table_name,pri_type)).fetchall()
        if len(pri) == 1:
            return True
        else:
            return False


    @classmethod
    def check_database_privilege(cls,table_name,pri_type,user,session):
        pass

    @classmethod
    def check_database_privilege_pg(cls,table_name,pri_type,user,session):
        pass