コード例 #1
0
ファイル: sql_handler.py プロジェクト: mouday/AQuery
    def list_data_handler(cls, sql, data, **kwargs):
        """
        ({list}) -> (#{list-1}, #{list-2}...)
        """
        list_keys = SqlUtil.get_list_key(sql)

        if not list_keys:
            return sql

        logger.debug("[list_keys] %s", list_keys)

        for key in list_keys:
            value = data.pop(key)
            if isinstance(value, list):
                in_data = SqlUtil.get_list_data(key, value)

                # 确认没有交集才进行添加,否则会污染数据
                if not data.keys().isdisjoint(in_data.keys()):
                    raise Exception("有重复数据,不能进行添加")

                data.update(in_data)
                value = SqlUtil.get_value_str(in_data.keys())

                sql = sql.replace(f"({{{key}}})", value)
            else:
                raise TypeErrorException()

        return sql
コード例 #2
0
ファイル: sql_handler.py プロジェクト: mouday/AQuery
    def auto_data_handler(cls, sql, data, **kwargs):
        """
        @{key}
        :return:
        """
        auto_keys = SqlUtil.get_auto_keys(sql)

        # 如果有需要替换的原样数据
        if not auto_keys:
            return sql

        logger.debug("[auto_keys] %s", auto_keys)

        auto_data = {}
        for key in auto_keys:
            value = cls.AUTO_DATA_GETTER.get(key)

            if callable(value):
                value = value(data, sql)

            if value:
                auto_data[key] = value
            else:
                raise AutoDataNotFindException(key)

        return SqlUtil.auto_data_replace(sql, auto_data)
コード例 #3
0
ファイル: iquery.py プロジェクト: mouday/AQuery
    def query(cls, sql, data=None, **outer_kwargs):
        sql = cls._prepare_sql(sql, data, **outer_kwargs)
        data = cls._prepare_data(data, **outer_kwargs)

        logger.debug("[query] %s %s", sql, data)

        ignore_errors = cls.IGNORE_ERRORS + outer_kwargs.get(
            'ignore_errors', ())
        cursor = cls.execute(sql, data, ignore_errors=ignore_errors)

        return cls._prepare_cursor(cursor, **outer_kwargs)
コード例 #4
0
ファイル: sql_handler.py プロジェクト: mouday/AQuery
    def raw_data_handle(cls, sql, data, **kwargs):
        """
        原样数据
        ${key}
        优先级 data > class_object
        """

        raw_keys = SqlUtil.get_raw_keys(sql)

        # 如果有需要替换的原样数据
        if not raw_keys:
            return sql

        logger.debug("[raw_keys] %s", raw_keys)

        raw_data = {}

        # 从class_object 中获取数据
        class_object = kwargs.get("class_object", None)
        if class_object:
            for key in raw_keys:
                if hasattr(class_object, key):
                    raw_data[key] = getattr(class_object, key)

        # 从data中获取数据
        if isinstance(data, dict):
            for key in raw_keys:
                if key in data:
                    raw_data[key] = data.pop(key)

        # 数据检查
        for key in raw_keys:
            if key not in raw_data.keys():
                raise RawDataNotFindException(key)

        # 原样替换
        return SqlUtil.raw_data_replace(sql, raw_data)
コード例 #5
0
ファイル: cursor_handler.py プロジェクト: mouday/AQuery
 def handle(cls, cursor, **outer_kwargs):
     if hasattr(cursor, "statement"):
         logger.debug('[statement] %s', cursor.statement)
コード例 #6
0
ファイル: database.py プロジェクト: mouday/AQuery
 def close(cls):
     logger.debug("close database")
     cls.cursor.close()
     cls.connect.close()
コード例 #7
0
ファイル: database.py プロジェクト: mouday/AQuery
 def open(cls):
     logger.debug("open database")
     cls.connect = cls.DATABASE_CONNECTOR(**cls.DATABASE_CONFIG)
     cls.cursor = cls.connect.cursor(**cls.CURSOR_CONFIG)