🐦⬛ 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``
|
根据参数 |
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()方法根据database、table_name和params参数从指定数据库读取数据,根据return_type参数返回对应类型的DataFrame。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
table_name |
str
|
数据表名 |
required |
params |
dict
|
默认为 查询条件,即WHERE子句的参数。默认为 |
None
|
database |
str
|
默认为 数据库名称,默认为 |
None
|
return_type |
str
|
返回 注意:不同数据库子类支持的存在差异,具体以数据库子类支持的类型为准。 |
'pandas'
|
threads |
int
|
线程数, 默认值为 4。 系统根据指定的线程数平均拆分为分区数来对查询进行分区,并为每个分区分配一个线程来并行加载和写入数据。 |
4
|
Returns:
| Name | Type | Description |
|---|---|---|
DataFrame |
Pandas、Polars or Dask
|
返回 |
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'
|
index |
bool
|
是否将索引作为一列写入数据表,默认值False. |
False
|
Examples:
>>> 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
|
数据库连接所必须的信息。默认值为 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
|
数据库连接所必须的信息。默认值为 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数据的写入,需要传入dataframe、table name 两个参数。
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
df |
DataFrame
|
需要写入的数据, |
required |
table_name |
str
|
指定 |
required |
database |
str
|
数据库名,默认为 |
None
|
if_exists |
str
|
当数据库中存在数据表时处理方式, 默认为
|
'append'
|
index |
bool
|
将 |
False
|