%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