Package: pydbapi
pydbapiInstallationpipinstallpydbapi支持的数据库类型sqlitefrompydbapi.apiimportSqliteDBdb=SqliteDB(database=None)# 或者传入路径sql='select * from [table];'row,action,result=db.execute(sql)Amazon Redshiftfrompydbapi.apiimportRedshiftDBdb=RedshiftDB(host,user,password,database,port='5439',safe_rule=True)sql='select * from [schema].[table];'row,action,result=db.execute(sql)Mysqlfrompydbapi.apiimportMysqlDBdb=MysqlDB(host,user,password,database,port=3306,safe_rule=True,isdoris=False)sql='select * from [table];'row,action,result=db.execute(sql)Trinofrompydbapi.apiimportTrinoDBdb=TrinoDB(host,user,password,database,catalog,port=8443,safe_rule=True)sql='select * from [table];'row,action,result=db.execute(sql)Snowflake(删除)frompydbapi.apiimportSnowflakeDBdb=SnowflakeDB(user,password,account,warehouse,database,schema,safe_rule=True)sql='select * from [table];'row,action,result=db.execute(sql)instance模式frompydbapi.apiimportSqliteDBdb=SqliteDB.get_instance(database=None)# 或者传入路径sql='select * from [table];'row,action,result=db.execute(sql)Columnfrom pydbapi.col import ColumnModelColumnModel代码col = ColumnModel(newname, coltype='varchar', sqlexpr=None, func=None, order=0)paramsnewname: 新命名；coltype: 类型sqlexpr: 查询sql表达式func: 查询函数，暂时支持'min', 'max', 'sum', 'count'order: 排序ColumnsModel代码cols = ColumnsModel(ColumnModel, ColumnModel, ……)propertyfunc_cols: 返回col列表nonfunc_cols: 返回col列表new_cols: 返回拼接字符串create_cols: 返回拼接字符串select_cols: 返回拼接字符串group_cols: 返回拼接字符串order_cols: 返回拼接字符串mothedget_column_by_namecols.get_column_by_name(name)返回ColumnModel支持的操作execute【db/base.py】代码db.execute(sql, count=None, ehandling=None, verbose=0)paramscount: 返回结果的数量;ehandling: sql执行出错的时候处理方式, default: Noneverbose: 执行的进度展示方式（0：不打印， 1：文字进度， 2：进度条）select代码db.select(tablename, columns, condition=None, verbose=0)paramstablename: 表名;columns： 列内容;condition: sql where 中的条件createsqlite/redshift代码db.create(tablename, columns, indexes=None, verbose=0)paramstablename: 表名;columns： 列内容;indexes: 索引，sqlite暂不支持索引verbose： 是否打印执行进度。mysql代码db.create(tablename, columns, indexes=None, index_part=128, ismultiple_index=True, partition=None, verbose=0)paramstablename: 表名;columns： 列内容;indexes: 索引index_part: 索引partismultiple_index: 多重索引partition: 分区verbose： 是否打印执行进度。trino代码db.create(tablename, columns, partition=None, verbose=0)paramstablename: 表名;columns： 列内容;partition: 分区verbose： 是否打印执行进度。insert【db/base.py】代码db.insert(tablename, columns, inserttype='value', values=None, chunksize=1000, fromtable=None, condition=None)paramstablename: 表名;columns： 列内容;inserttype: 插入数据类型，支持value、selectvalues: inserttype='value',插入的数值;chunksize: inserttype='value', 每个批次插入的量级;fromtable: inserttype='select',数据来源表;condition:  inserttype='select',数据来源条件;drop【db/base.py】代码db.drop(tablename)paramstablename: 表名;delete【db/base.py】代码db.delete(tablename, condition)paramstablename: 表名;condition: 插入的数值;get_columns代码db.get_columns(tablename)paramstablename: 表名;add_columns代码db.add_columns(tablename, columns)paramstablename: 表名;columns： 列内容;get_filesqls【db/fileexec.py】代码db.get_filesqls(filepath, **kw)paramsfilepath: sql文件路径;kw： sql文件中需要替换的参数，会替换sqlfile中的arguments;file_exec【db/fileexec.py】代码db.file_exec(filepath, ehandling=None, verbose=0, **kw)paramsfilepath: sql文件路径; 文件名以test开始或者结尾会打印sql执行的步骤;ehandling: sql执行出错的时候处理方式, default: Noneverbose: 执行的进度展示方式（0：不打印， 1：文字进度， 2：进度条）kw： sql文件中需要替换的参数 在sql文件中用$param, 会替换sqlfile中的arguments;sql文件格式(在desc中增加verbose会打印sql执行的步骤;)#【arguments】#ts='2020-06-28'date=todaydate_max=date+timedelta(days=10)#【arguments】####--【desc1 [verbose]】 #sql描述--step1sql1;--step2sql2wherename=$name;######--【desc2 [verbose]】 #sql描述--step1sql1;--step2sql2;###arguments支持python表达式（datetime、date、timedelta）支持全局变量和当前sqlfile设置过的变量now：获取执行的时间today: 获取执行的日期魔法命令参数帮助%dbconfig配置%dbconfigDBTYPE='mysql'%dbconfigHOST='localhost'%dbconfigUSER='longfengpili'%dbconfigPASSWORD='123456abc'%dbconfigDATABASE='test'%dbconfigPORT=3306查看%dbconfig DBTYPE使用方法使用load_ext%load_ext pydbapi配置startup文件夹创建文件mymagics.py文件中添加如下代码frompydbapiimportPydbapiMagicsc=get_ipython()# 注册魔术命令c.register_magics(PydbapiMagics)文件添加至目录/user/.ipython/profile_default/startup支持的的settings【conf/settings.py】AUTO_RULES可以自动执行表名（表名包含即可）REDSHIFT_AUTO_RULESAmazon Redshift 可以自动执行表名（表名包含即可）调用日志格式查看每步sql可以使用如下日志格式（如果还出错，同时加上上面的内容）importloggingdblogger=logging.getLogger('pydbapi.db.base')dblogger.setLevel(logging.DEBUG)