%global _empty_manifest_terminate_build 0 Name: python-pydbapi Version: 0.0.106 Release: 1 Summary: A simple database API License: MIT License URL: https://pypi.org/project/pydbapi/ Source0: https://mirrors.nju.edu.cn/pypi/web/packages/86/d8/9581e1d319cf0ba55afea61f5aeca6190ad75c1027c6effa64bfdbb59f75/pydbapi-0.0.106.tar.gz BuildArch: noarch Requires: python3-psycopg2-binary Requires: python3-pandas Requires: python3-pymysql Requires: python3-colorlog Requires: python3-tqdm %description # pydbapi ## Installation ```python pip install pydbapi ``` ## 支持的数据库类型 + sqlite ```python from pydbapi.api import SqliteDB db = SqliteDB(database=None) # 或者传入路径 sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + Amazon Redshift ```python from pydbapi.api import RedshiftDB db = RedshiftDB(host, user, password, database, port='5439', safe_rule=True) sql = 'select * from [schema].[table];' row, action, result = db.execute(sql) ``` + Mysql ```python from pydbapi.api import MysqlDB db = MysqlDB(host, user, password, database, port=3306, safe_rule=True, isdoris=False) sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + Snowflake(删除) ```python from pydbapi.api import SnowflakeDB db = SnowflakeDB(user, password, account, warehouse, database, schema, safe_rule=True) sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + instance模式 ```python from pydbapi.api import SqliteDB db = SqliteDB.get_instance(database=None) # 或者传入路径 sql = 'select * from [table];' row, action, result = db.execute(sql) ``` ## Column `from pydbapi.col import ColumnModel` + ColumnModel + 代码 `col = ColumnModel(newname, coltype='varchar', sqlexpr=None, func=None, order=0)` + params * `newname`: 新命名; * `coltype`: 类型 * `sqlexpr`: 查询sql表达式 * `func`: 查询函数,暂时支持'min', 'max', 'sum', 'count' * `order`: 排序 + ColumnsModel + 代码 `cols = ColumnsModel(ColumnModel, ColumnModel, ……)` + property * `func_cols`: 返回col列表 * `nonfunc_cols`: 返回col列表 * `new_cols`: 返回拼接字符串 * `create_cols`: 返回拼接字符串 * `select_cols`: 返回拼接字符串 * `group_cols`: 返回拼接字符串 * `order_cols`: 返回拼接字符串 + mothed * get_column_by_name - `cols.get_column_by_name(name)` - 返回`ColumnModel` ## 支持的操作 + execute[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.execute(sql, count=None, ehandling=None, verbose=0)` + params * `count`: 返回结果的数量; * `ehandling`: sql执行出错的时候处理方式, default: None * `verbose`: 执行的进度展示方式(0:不打印, 1:文字进度, 2:进度条) + select + 代码 `db.select(tablename, columns, condition=None, verbose=0)` + params * `tablename`: 表名; * `columns`: 列内容; * `condition`: sql where 中的条件 + create + sqlite/redshift + 代码 `db.create(tablename, columns, indexes=None, verbose=0)` + params - `tablename`: 表名; - `columns`: 列内容; - `indexes`: 索引,sqlite暂不支持索引 - `verbose`: 是否打印执行进度。 + mysql + 代码 `db.create(tablename, columns, indexes=None, index_part=128, ismultiple_index=True, partition=None, verbose=0)` + params - `tablename`: 表名; - `columns`: 列内容; - `indexes`: 索引 - `index_part`: 索引part - `ismultiple_index`: 多重索引 - `partition`: 分区 - `verbose`: 是否打印执行进度。 + insert[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.insert(tablename, columns, inserttype='value', values=None, chunksize=1000, fromtable=None, condition=None)` + params * `tablename`: 表名; * `columns`: 列内容; * `inserttype`: 插入数据类型,支持value、select * `values`: inserttype='value',插入的数值; * `chunksize`: inserttype='value', 每个批次插入的量级; * `fromtable`: inserttype='select',数据来源表; * `condition`: inserttype='select',数据来源条件; + drop[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.drop(tablename)` + params * `tablename`: 表名; + delete[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.delete(tablename, condition)` + params * `tablename`: 表名; * `condition`: 插入的数值; + get_columns + 代码 `db.get_columns(tablename)` + params * `tablename`: 表名; + add_columns + 代码 `db.add_columns(tablename, columns)` + params * `tablename`: 表名; * `columns`: 列内容; + get_filesqls[【db/fileexec.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/fileexec.py) + 代码 `db.get_filesqls(filepath, **kw)` + params * `filepath`: sql文件路径; * `kw`: sql文件中需要替换的参数,会替换sqlfile中的arguments; + file_exec[【db/fileexec.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/fileexec.py) + 代码 `db.file_exec(filepath, ehandling=None, verbose=0, **kw)` + params * `filepath`: sql文件路径; 文件名以`test`开始或者结尾会打印sql执行的步骤; * `ehandling`: sql执行出错的时候处理方式, default: None * `verbose`: 执行的进度展示方式(0:不打印, 1:文字进度, 2:进度条) * `kw`: sql文件中需要替换的参数 在sql文件中用`$param`, 会替换sqlfile中的arguments; + sql文件格式(在desc中增加`verbose`会打印sql执行的步骤;) ```sql #【arguments】# ts = '2020-06-28' date = today date_max = date + timedelta(days=10) #【arguments】# ### --【desc1 [verbose]】 #sql描述 --step1 sql1; --step2 sql2 where name = $name; ### ### --【desc2 [verbose]】 #sql描述 --step1 sql1; --step2 sql2; ### ``` + arguments * 支持python表达式(datetime、date、timedelta) * 支持全局变量和当前sqlfile设置过的变量 * now:获取执行的时间 * today: 获取执行的日期 ## 支持的的settings[【conf/settings.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/conf/settings.py) + AUTO_RULES 可以自动执行表名(表名包含即可) + REDSHIFT_AUTO_RULES Amazon Redshift 可以自动执行表名(表名包含即可) ## 调用日志格式 1. 调用基础日志格式(已添加至工程init) ```python import logging.config from pydbapi.conf.settings import LOGGING_CONFIG logging.config.dictConfig(LOGGING_CONFIG) ``` 2. 查看每步sql可以使用如下日志格式(如果还出错,同时加上上面的内容) ```python import logging dblogger = logging.getLogger('pydbapi.db.base') dblogger.setLevel(logging.DEBUG) ``` %package -n python3-pydbapi Summary: A simple database API Provides: python-pydbapi BuildRequires: python3-devel BuildRequires: python3-setuptools BuildRequires: python3-pip %description -n python3-pydbapi # pydbapi ## Installation ```python pip install pydbapi ``` ## 支持的数据库类型 + sqlite ```python from pydbapi.api import SqliteDB db = SqliteDB(database=None) # 或者传入路径 sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + Amazon Redshift ```python from pydbapi.api import RedshiftDB db = RedshiftDB(host, user, password, database, port='5439', safe_rule=True) sql = 'select * from [schema].[table];' row, action, result = db.execute(sql) ``` + Mysql ```python from pydbapi.api import MysqlDB db = MysqlDB(host, user, password, database, port=3306, safe_rule=True, isdoris=False) sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + Snowflake(删除) ```python from pydbapi.api import SnowflakeDB db = SnowflakeDB(user, password, account, warehouse, database, schema, safe_rule=True) sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + instance模式 ```python from pydbapi.api import SqliteDB db = SqliteDB.get_instance(database=None) # 或者传入路径 sql = 'select * from [table];' row, action, result = db.execute(sql) ``` ## Column `from pydbapi.col import ColumnModel` + ColumnModel + 代码 `col = ColumnModel(newname, coltype='varchar', sqlexpr=None, func=None, order=0)` + params * `newname`: 新命名; * `coltype`: 类型 * `sqlexpr`: 查询sql表达式 * `func`: 查询函数,暂时支持'min', 'max', 'sum', 'count' * `order`: 排序 + ColumnsModel + 代码 `cols = ColumnsModel(ColumnModel, ColumnModel, ……)` + property * `func_cols`: 返回col列表 * `nonfunc_cols`: 返回col列表 * `new_cols`: 返回拼接字符串 * `create_cols`: 返回拼接字符串 * `select_cols`: 返回拼接字符串 * `group_cols`: 返回拼接字符串 * `order_cols`: 返回拼接字符串 + mothed * get_column_by_name - `cols.get_column_by_name(name)` - 返回`ColumnModel` ## 支持的操作 + execute[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.execute(sql, count=None, ehandling=None, verbose=0)` + params * `count`: 返回结果的数量; * `ehandling`: sql执行出错的时候处理方式, default: None * `verbose`: 执行的进度展示方式(0:不打印, 1:文字进度, 2:进度条) + select + 代码 `db.select(tablename, columns, condition=None, verbose=0)` + params * `tablename`: 表名; * `columns`: 列内容; * `condition`: sql where 中的条件 + create + sqlite/redshift + 代码 `db.create(tablename, columns, indexes=None, verbose=0)` + params - `tablename`: 表名; - `columns`: 列内容; - `indexes`: 索引,sqlite暂不支持索引 - `verbose`: 是否打印执行进度。 + mysql + 代码 `db.create(tablename, columns, indexes=None, index_part=128, ismultiple_index=True, partition=None, verbose=0)` + params - `tablename`: 表名; - `columns`: 列内容; - `indexes`: 索引 - `index_part`: 索引part - `ismultiple_index`: 多重索引 - `partition`: 分区 - `verbose`: 是否打印执行进度。 + insert[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.insert(tablename, columns, inserttype='value', values=None, chunksize=1000, fromtable=None, condition=None)` + params * `tablename`: 表名; * `columns`: 列内容; * `inserttype`: 插入数据类型,支持value、select * `values`: inserttype='value',插入的数值; * `chunksize`: inserttype='value', 每个批次插入的量级; * `fromtable`: inserttype='select',数据来源表; * `condition`: inserttype='select',数据来源条件; + drop[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.drop(tablename)` + params * `tablename`: 表名; + delete[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.delete(tablename, condition)` + params * `tablename`: 表名; * `condition`: 插入的数值; + get_columns + 代码 `db.get_columns(tablename)` + params * `tablename`: 表名; + add_columns + 代码 `db.add_columns(tablename, columns)` + params * `tablename`: 表名; * `columns`: 列内容; + get_filesqls[【db/fileexec.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/fileexec.py) + 代码 `db.get_filesqls(filepath, **kw)` + params * `filepath`: sql文件路径; * `kw`: sql文件中需要替换的参数,会替换sqlfile中的arguments; + file_exec[【db/fileexec.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/fileexec.py) + 代码 `db.file_exec(filepath, ehandling=None, verbose=0, **kw)` + params * `filepath`: sql文件路径; 文件名以`test`开始或者结尾会打印sql执行的步骤; * `ehandling`: sql执行出错的时候处理方式, default: None * `verbose`: 执行的进度展示方式(0:不打印, 1:文字进度, 2:进度条) * `kw`: sql文件中需要替换的参数 在sql文件中用`$param`, 会替换sqlfile中的arguments; + sql文件格式(在desc中增加`verbose`会打印sql执行的步骤;) ```sql #【arguments】# ts = '2020-06-28' date = today date_max = date + timedelta(days=10) #【arguments】# ### --【desc1 [verbose]】 #sql描述 --step1 sql1; --step2 sql2 where name = $name; ### ### --【desc2 [verbose]】 #sql描述 --step1 sql1; --step2 sql2; ### ``` + arguments * 支持python表达式(datetime、date、timedelta) * 支持全局变量和当前sqlfile设置过的变量 * now:获取执行的时间 * today: 获取执行的日期 ## 支持的的settings[【conf/settings.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/conf/settings.py) + AUTO_RULES 可以自动执行表名(表名包含即可) + REDSHIFT_AUTO_RULES Amazon Redshift 可以自动执行表名(表名包含即可) ## 调用日志格式 1. 调用基础日志格式(已添加至工程init) ```python import logging.config from pydbapi.conf.settings import LOGGING_CONFIG logging.config.dictConfig(LOGGING_CONFIG) ``` 2. 查看每步sql可以使用如下日志格式(如果还出错,同时加上上面的内容) ```python import logging dblogger = logging.getLogger('pydbapi.db.base') dblogger.setLevel(logging.DEBUG) ``` %package help Summary: Development documents and examples for pydbapi Provides: python3-pydbapi-doc %description help # pydbapi ## Installation ```python pip install pydbapi ``` ## 支持的数据库类型 + sqlite ```python from pydbapi.api import SqliteDB db = SqliteDB(database=None) # 或者传入路径 sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + Amazon Redshift ```python from pydbapi.api import RedshiftDB db = RedshiftDB(host, user, password, database, port='5439', safe_rule=True) sql = 'select * from [schema].[table];' row, action, result = db.execute(sql) ``` + Mysql ```python from pydbapi.api import MysqlDB db = MysqlDB(host, user, password, database, port=3306, safe_rule=True, isdoris=False) sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + Snowflake(删除) ```python from pydbapi.api import SnowflakeDB db = SnowflakeDB(user, password, account, warehouse, database, schema, safe_rule=True) sql = 'select * from [table];' row, action, result = db.execute(sql) ``` + instance模式 ```python from pydbapi.api import SqliteDB db = SqliteDB.get_instance(database=None) # 或者传入路径 sql = 'select * from [table];' row, action, result = db.execute(sql) ``` ## Column `from pydbapi.col import ColumnModel` + ColumnModel + 代码 `col = ColumnModel(newname, coltype='varchar', sqlexpr=None, func=None, order=0)` + params * `newname`: 新命名; * `coltype`: 类型 * `sqlexpr`: 查询sql表达式 * `func`: 查询函数,暂时支持'min', 'max', 'sum', 'count' * `order`: 排序 + ColumnsModel + 代码 `cols = ColumnsModel(ColumnModel, ColumnModel, ……)` + property * `func_cols`: 返回col列表 * `nonfunc_cols`: 返回col列表 * `new_cols`: 返回拼接字符串 * `create_cols`: 返回拼接字符串 * `select_cols`: 返回拼接字符串 * `group_cols`: 返回拼接字符串 * `order_cols`: 返回拼接字符串 + mothed * get_column_by_name - `cols.get_column_by_name(name)` - 返回`ColumnModel` ## 支持的操作 + execute[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.execute(sql, count=None, ehandling=None, verbose=0)` + params * `count`: 返回结果的数量; * `ehandling`: sql执行出错的时候处理方式, default: None * `verbose`: 执行的进度展示方式(0:不打印, 1:文字进度, 2:进度条) + select + 代码 `db.select(tablename, columns, condition=None, verbose=0)` + params * `tablename`: 表名; * `columns`: 列内容; * `condition`: sql where 中的条件 + create + sqlite/redshift + 代码 `db.create(tablename, columns, indexes=None, verbose=0)` + params - `tablename`: 表名; - `columns`: 列内容; - `indexes`: 索引,sqlite暂不支持索引 - `verbose`: 是否打印执行进度。 + mysql + 代码 `db.create(tablename, columns, indexes=None, index_part=128, ismultiple_index=True, partition=None, verbose=0)` + params - `tablename`: 表名; - `columns`: 列内容; - `indexes`: 索引 - `index_part`: 索引part - `ismultiple_index`: 多重索引 - `partition`: 分区 - `verbose`: 是否打印执行进度。 + insert[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.insert(tablename, columns, inserttype='value', values=None, chunksize=1000, fromtable=None, condition=None)` + params * `tablename`: 表名; * `columns`: 列内容; * `inserttype`: 插入数据类型,支持value、select * `values`: inserttype='value',插入的数值; * `chunksize`: inserttype='value', 每个批次插入的量级; * `fromtable`: inserttype='select',数据来源表; * `condition`: inserttype='select',数据来源条件; + drop[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.drop(tablename)` + params * `tablename`: 表名; + delete[【db/base.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/base.py) + 代码 `db.delete(tablename, condition)` + params * `tablename`: 表名; * `condition`: 插入的数值; + get_columns + 代码 `db.get_columns(tablename)` + params * `tablename`: 表名; + add_columns + 代码 `db.add_columns(tablename, columns)` + params * `tablename`: 表名; * `columns`: 列内容; + get_filesqls[【db/fileexec.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/fileexec.py) + 代码 `db.get_filesqls(filepath, **kw)` + params * `filepath`: sql文件路径; * `kw`: sql文件中需要替换的参数,会替换sqlfile中的arguments; + file_exec[【db/fileexec.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/db/fileexec.py) + 代码 `db.file_exec(filepath, ehandling=None, verbose=0, **kw)` + params * `filepath`: sql文件路径; 文件名以`test`开始或者结尾会打印sql执行的步骤; * `ehandling`: sql执行出错的时候处理方式, default: None * `verbose`: 执行的进度展示方式(0:不打印, 1:文字进度, 2:进度条) * `kw`: sql文件中需要替换的参数 在sql文件中用`$param`, 会替换sqlfile中的arguments; + sql文件格式(在desc中增加`verbose`会打印sql执行的步骤;) ```sql #【arguments】# ts = '2020-06-28' date = today date_max = date + timedelta(days=10) #【arguments】# ### --【desc1 [verbose]】 #sql描述 --step1 sql1; --step2 sql2 where name = $name; ### ### --【desc2 [verbose]】 #sql描述 --step1 sql1; --step2 sql2; ### ``` + arguments * 支持python表达式(datetime、date、timedelta) * 支持全局变量和当前sqlfile设置过的变量 * now:获取执行的时间 * today: 获取执行的日期 ## 支持的的settings[【conf/settings.py】](https://github.com/longfengpili/pydbapi/blob/master/pydbapi/conf/settings.py) + AUTO_RULES 可以自动执行表名(表名包含即可) + REDSHIFT_AUTO_RULES Amazon Redshift 可以自动执行表名(表名包含即可) ## 调用日志格式 1. 调用基础日志格式(已添加至工程init) ```python import logging.config from pydbapi.conf.settings import LOGGING_CONFIG logging.config.dictConfig(LOGGING_CONFIG) ``` 2. 查看每步sql可以使用如下日志格式(如果还出错,同时加上上面的内容) ```python import logging dblogger = logging.getLogger('pydbapi.db.base') dblogger.setLevel(logging.DEBUG) ``` %prep %autosetup -n pydbapi-0.0.106 %build %py3_build %install %py3_install install -d -m755 %{buildroot}/%{_pkgdocdir} if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi pushd %{buildroot} if [ -d usr/lib ]; then find usr/lib -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/lib64 ]; then find usr/lib64 -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/bin ]; then find usr/bin -type f -printf "/%h/%f\n" >> filelist.lst fi if [ -d usr/sbin ]; then find usr/sbin -type f -printf "/%h/%f\n" >> filelist.lst fi touch doclist.lst if [ -d usr/share/man ]; then find usr/share/man -type f -printf "/%h/%f.gz\n" >> doclist.lst fi popd mv %{buildroot}/filelist.lst . mv %{buildroot}/doclist.lst . %files -n python3-pydbapi -f filelist.lst %dir %{python3_sitelib}/* %files help -f doclist.lst %{_docdir}/* %changelog * Tue May 30 2023 Python_Bot - 0.0.106-1 - Package Spec generated