strong-utils 0.1.0
This project aims to create a more powerful toolbox for the everyday needs of Python developers
Requires Python: >=3.6.*

## Project description

<br>

<br>

#### **strong_utils： 强大的Python开发工具包**

<br>

<br>

#### What is it?

strong_utils是一个Python包，它提供了简单易用的工具包，囊括了数据分析师、数据开发工程师常用的方法，让开发工作变的更加高效。该工具包正在不断完善中，敬请期待。

当前版本中该项目提供功能如下：

| 模块   | 功能                               | 使用接口                                                     | 使用范围                     |
| ------ | ---------------------------------- | ------------------------------------------------------------ | ---------------------------- |
| 数据库 | sql查询                            | strong_utils.Hologres(*`class args`*).select_holo(*`sql`*)   | Hologres                     |
|        | sql查询                            | strong_utils.ODPS(*`class args`*).select_odps(*`sql`*)       | MaxCompute                   |
|        | 本地文件导入ODPS                   | strong_utils.ODPS(*`class args`*).local_data_written_to_odps(*`fun args`*) | MaxCompute                   |
| | 获取表的数据字典 | strong_utils.ODPS(*`class args`*).get_meta_table_column(*`fun args`*) | MaxCompute |
| | 生成DDL建表语句(from odps) | strong_utils.ODPS(*`class args`*).generate_ddl(*`fun args`*) | Hologres,PostgreSQL |
|        | [获取数据库元数据](#get_meta_data) | strong_utils.GetMetaData(*`class args`*).get_meta_data()     | SQLServer,MySQL,PostgreSQL |
| | 生成DDL建表语句 | strong_utils.GetMetaData(*`class args`*).generate_ddl(*`fun args`*) | MaxCompute,... |
| | 获取MySQL原始建表语句 | strong_utils.GetMetaData(*`class args`*).show_create_table(*`fun args`*) | MySQL |
| 工具   | MD5加密                            | strong_utils.md5(*`fun args`*)                               | List                         |
|        | 打包数据并存储到本地文件           | strong_utils.pack_data_to_local(*`fun args`*)                | DataFrame,list,dict        |
|        | 发送邮件           | strong_utils.email(*`fun args`*)                |         |
|        | 发送钉钉消息 | strong_utils.Dingtalk(*`class args`*).send_text(*`fun args`*) | send_text, <br>send_markdown, <br>send_image, <br>send_link, <br>send_action_card, <br>send_feed_card |
| OSS    | 下载oss文件到本地                  | strong_utils.download_oss_object_to_local(*`fun args`*)      |                              |
|        | 上传本地文件到oss                  | strong_utils.put_local_object_to_oss(*`fun args`*)           |                              |
| DataWorks OpenAPI<br>*适用于企业版和旗舰版* | 根据关键词条件搜索表 | strong_utils.OpenAPI(*`class args`*).search_meta_tables(*`fun args`*) |                              |
|        | 获取表的数据字典 | strong_utils.OpenAPI(*`class args`*).get_meta_table_column(*`fun args`*) |                              |
| | 查询dataworks中业务流程文件列表 | strong_utils.OpenAPI(*`class args`*).get_list_files(*`fun args`*) | |
| | 查询dataworks中数据源列表 | strong_utils.OpenAPI(*`class args`*).list_data_sources(*`fun args`*) | |

<br>

<br>

#### Where to get it

源代码目前托管在 GitHub 上： [https://github.com/qushuxian/strong_utils.git](https://github.com/qushuxian/strong_utils.git)

[Python 包索引 (PyPI)](https://pypi.org/project/strong_utils)提供了最新发布版本的二进制安装程序。

```shell
# PyPI
pip install strong-utils
```

<br>

<br>

#### Demo

##### <span id='get_meta_data'>获取数据库元数据</span>

![image-20220728113520500](https://raw.githubusercontent.com/qushuxian/static_files/main/image-20220728113520500.png)

```json
// 配置数据库信息
db = {
    "NameEN": "Demo",
    "NameCN": "获取数据库元数据测试",
    // 额外信息，便于不同数据库之间命名不同的Mapping和检索
    "DatabaseMapping": {
        "ODPS_DatabaseName": ["odps_demo"],
        "OLD_DatabaseName": ["demo"],
        "Keyword": ["s_demo"]
    },
    // 仅支持 SQLServer, MySQL, PostgreSQL
    "Type": "PostgreSQL",
    "host": "127.0.0.1",
    "port": "5432",
    "user": "postgres",
    "password": "demo123",
    "schema": "dwd"
}
```

```python
# 获取元数据
df = strong_utils.GetMetaData(**db).get_meta_data(is_table_count=True)
```

获取到的元数据df如下，其中字段【真实表数据量】是通过 `select count(1) from table`获取的真实表数据量，实际使用请注意数据库性能。

![image-20220728113706201](https://raw.githubusercontent.com/qushuxian/static_files/main/image-20220728113706201.png)

<br>

<br>



<br>

<br>

#### More features, stay tuned...