跳转至

🐦‍⬛ ailab100.pdbc.sql

ailab.pdbc.sql 简介

ailab.pdbc.sql 类用于关系型数据库管理系统RDBMS的读写,支持MySQL、微软SQL SERVER、SQLite、ORACLE、MariaDB 、PostgreSQL等主流结构化数据库。

  • MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发、发布和支持。
  • SQLite是一款轻量级的关系型数据库,它的设计目标是用于嵌入式系统中的,占用资源很低,只需要几百K的内存,支持Windows、Linux、Unix等主流的操作系统。
  • SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。
  • Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。
  • PostgreSQL是以加州大学伯克利分校计算机系开发的对象关系型数据库管理系统(ORDBMS),已经更名为PostgreSQL
  • MariaDB是一种开源的关系型数据库管理系统(RDBMS),它是MySQL的一个分支,由MySQL的创建者Michael Widenius于2009年创建。

API文档

1.DBConnector基类

alcedo_pdbc.sql.DBConnector

ailab100.pdbc.DBConnector是一个RDBMS数据库连接的基类,主要用于从指定数据库中读取数据并返回Dataframe、下载数据以及将 Dataframe 输入写入数据库。

Parameters:

Name Type Description Default
config dict

数据库连接的配置信息,接受数据库子类的传参进行数据库连接。

required
db_type str

数据库类型,接受数据库子类传参 eg: mysql, postgresql...

required

Functions

alcedo_pdbc.sql.DBConnector.download_as_file(filename, table_name, params=None, database=None) method descriptor

DBConnector.download_as_file(self, str filename: str, str table_name: str, dict params: dict = None, str database: str = None)

download_as_file()方法用于从数据库查询数据并输出为指定文件格式

Parameters:

Name Type Description Default
table_name str

数据表名

required
params dict

查询条件,即WHERE子句的参数。默认为None查询全部数据。

None
filename str

导出文件名

required
database str

数据库名,默认为None,根据数据库子类的参数config进行传参,如果传参为None时,可以在此输入参数值。

None

Returns:

Name Type Description
file ``CSV``、``Excel``、 ``JSON``、``HTML``、 ``HDF5``、 ``Feather``、 ``Parquet`` 、``Apache Avro``

根据参数filename文件类型导出文件保存至指定的目录下

Examples:

>>> from alcedo_pdbc.sql import MySQL
>>> db_mysql = MySQL(config)
>>> db_mysql.download_as_file(filename="examples.json",
                   table_name="public_rent_price_forecast_data",
                   params={"houseFloor":"低","totalFloor":2})
Notes

V1.0版本支持的文件格式包括csv、json、xlsx、html、hdf5、parquet、feather, 后续会增加avro

alcedo_pdbc.sql.DBConnector.read_as_dataframe(table_name, params=None, database=None, return_type='pandas', threads=4) method descriptor

DBConnector.read_as_dataframe(self, str table_name: str, dict params: dict = None, str database: str = None, return_type='pandas', int threads: int = 4)

read_as_dataframe()方法根据databasetable_nameparams参数从指定数据库读取数据,根据return_type参数返回对应类型的DataFrame

Parameters:

Name Type Description Default
table_name str

数据表名

required
params dict

默认为 None

查询条件,即WHERE子句的参数。默认为 None ,即查询全部数据.

None
database str

默认为 None

数据库名称,默认为 None ,根据数据库子类的参数config进行传参,如果传参为None时,可以在此输入参数值。

None
return_type str

返回DataFrame的类型,默认值为Pandas. 系统支持PandasPolarsDask三种类型。

注意:不同数据库子类支持的存在差异,具体以数据库子类支持的类型为准。

'pandas'
threads int

线程数, 默认值为 4。

系统根据指定的线程数平均拆分为分区数来对查询进行分区,并为每个分区分配一个线程来并行加载和写入数据。

4

Returns:

Name Type Description
DataFrame Pandas、Polars or Dask

返回 return_type 参数对应的数据帧DataFrame

Examples:

>>> from alcedo_pdbc.sql import MySQL
>>> db_mysql = MySQL(config)
>>> df = db_mysql.read_as_dataframe(table_name="public_rent_price_forecast_data",
                        params={"houseFloor":"低","totalFloor":2},
                        return_type='polars'
                        )
>>> print(type(df))
    <class 'polars.dataframe.frame.DataFrame'>
Notes

如果要使用Redis查询缓存提升响应速度.在db.config 中配置Redis以及各类数据库子类默认的config信息。

alcedo_pdbc.sql.DBConnector.write_dataframe(df, table_name, database=None, if_exists='append', index=False) method descriptor

DBConnector.write_dataframe(self, df, str table_name: str, str database: str = None, str if_exists: str = 'append', index=False)

write_dataframe()方法用于将 DataFrame 数据写入指定数据库的数据表中。

Parameters:

Name Type Description Default
df DataFrame

需要写入数据表的数据,必须载入dataframe

required
table_name str

目标数据表

required
database str

目标数据库

None
if_exists str

数据表存在处理方式,选项 ["append","replace","fail"]. 默认append 。

  • append 即原表的基础上追加记录
  • replace 删除原表建立新表并添加记录
  • fail 不处理
'append'
index bool

是否将索引作为一列写入数据表,默认值False.

False

Examples:

>>> from alcedo_pdbc.sql import MySQL
>>> import polars as pl
>>> db_mysql = MySQL(config=mysql)
>>> alcedb = {'Column1':[1,2,3,4],
            'Column2':['A','B','C','D']}
>>> pd_df = pd.DataFrame(alcedb)
>>> pl_df=pl.from_pandas(pd_df)
>>> # Dataframe saved to the table: examples
>>> db_mysql.write_dataframe(df=pl_df,table_name='examples',database='ailab')
Notes

DataFrame与数据表的数据结构必须一致,V1.0版本支持pandas、polars的dataframe写入,后续会支持dask。

2.MySQL数据库

alcedo_pdbc.sql.MySQL

Bases: alcedo_pdbc.sql.sql_utils.DBConnector

MySQL子类用于创建MySQL数据库连接,并传递给DBConnector基类。

Parameters:

Name Type Description Default
config dict

数据库连接所必须的信息。默认值为None,通过 config 读取默认值。

eg:

config = {'USERNAME':root,'PASSWORD':root,'HOST':'127.0.0.1','PORT':3306,'DATABASE':'ailab'}

None

3.微软SQL Server数据库

alcedo_pdbc.sql.MSSQL

Bases: alcedo_pdbc.sql.sql_utils.DBConnector

MSSQL子类用于创建微软SQL Server数据库的连接,并传递给DBConnector基类。

Parameters:

Name Type Description Default
config dict

数据库连接所必须的信息。默认值为None,通过 config 读取默认值。

eg:

config = {'USERNAME':'sa','PASSWORD':'sa','HOST':'127.0.0.1','PORT':'1433',"DATABASE":'ailab'}

required

Functions

alcedo_pdbc.sql.MSSQL.write_dataframe(df, table_name, database=None, if_exists='append', index=False) method descriptor

MSSQL.write_dataframe(self, df, str table_name: str, str database: str = None, str if_exists: str = 'append', index=False)

write_dataframe()方法用于MSSQL数据的写入,需要传入dataframetable name 两个参数。

Parameters:

Name Type Description Default
df DataFrame

需要写入的数据,Dataframe需要载入实例化。

required
table_name str

指定SQL Server 数据库中的表名

required
database str

数据库名,默认为None,可选。当创建数据库链接时,如果database为空,需要在此处指定数据库名。

None
if_exists str

当数据库中存在数据表时处理方式, 默认为 append.

  • append: 即原表的基础上追加记录
  • replace: 删除原表建立新表并添加记录
  • fail: 不处理
'append'
index bool

DataFrameindex索引写为列,默认为 False

False

4.甲骨文Oracle数据库

5.PostgreSQL数据库

6.SQLite数据库

7.MariaDB数据库