简要记录了读取数据文件的各类包。

一. 文本类

1. open

open

(file, mode=‘r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
读写任意文本,自由度高,对于特定文件,可用其他包快捷读取。
参数说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
file: 必需,文件路径(相对或者绝对路径)。
mode: 可选,文件打开模式。t文本模式、b二进制、r读、w覆盖写、x写不覆盖、a追加写、+补充读写功能,及其组合
buffering: 设置缓冲,-1: 默认,一般默认4、8KB;0: 无缓冲;1: 行缓冲;>1,设置大小缓存区大小,单位 Byte,IO限制时搜索优化
encoding: 一般使用utf-8,还有ascii、utf*、gb*、iso*等,不可设置非文本编码,如zlib_codec、uu_codec
errors: 报错级别
'strict' 默认值,抛出 UnicodeDecodeError 或 UnicodeEncodeError
'ignore' 忽略无法编解码的字符
'replace' 用替换字符(如 ? 或 \ufffd)替代无法处理的字符
'surrogateescape' 用私有码点(\uDCnn)替代无法处理的字符
'backslashreplace' 用 Python 反斜杠转义序列替换无法处理的字符
'xmlcharrefreplace' 用 XML 字符引用替换(仅用于编码)
'namereplace' 用 \N{...} 格式替换字符名称(仅用于编码)
newline: 区分换行符
一般文本文件 None(默认)
CSV 文件 ''
强制 Unix 风格换行 '\n'
强制 Windows 风格换行 '\r\n'
保留原始换行符 ''
#closefd: 管理文件描述符,多修改于多进程/线程场景
#opener: 设置自定义开启器,开启器的返回值必须是一个打开的文件描述符。

2. csv

csv.reader

(csvfile, dialect=‘excel’, **fmtparams)
读取csv文件,返回list迭代器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
csvfile:"*任何*"支持迭代器的对象,通常是文件对象(用 open() 打开的文件)。
dialect:指定 CSV 格式的方言,默认是 'excel',即 Excel 默认导出的 CSV 格式,可通过csv.register_dialect()自定义。
**fmtparams:可选参数,用于覆盖方言中的某些设置,如分隔符、引用符等。
1. delimiter :指定字段之间的分隔符,默认是逗号 ,。
2. quotechar :指定引用字符,用于包裹包含特殊字符(如分隔符、换行符)的字段,默认是双引号 "。
3. escapechar :指定转义字符,用于转义引用字符或分隔符,默认是 None。
4. doublequote :布尔值,控制是否将两个连续的引用字符视为一个引用字符,默认是 True。
5. skipinitialspace :布尔值,控制是否忽略分隔符后的空格,默认是 False。
6. lineterminator :指定行终止符,仅在写入时有效,读取时会被忽略。
7. quoting :控制引用行为,可选值:
csv.QUOTE_MINIMAL:仅在必要时引用字段(默认)。
csv.QUOTE_ALL:引用所有字段。
csv.QUOTE_NONNUMERIC:引用所有非数字字段。
csv.QUOTE_NONE:不引用任何字段

csv.DictReader

(csvfile, fieldnames=None, restkey=None, restval=None, dialect=‘excel’, *args, **kwds)
读取csv文件,返回dict迭代器

1
2
3
4
5
6
csvfile :"*任何*"支持迭代器的对象
fieldnames :指定列名的列表,默认第一行。
restkey :用于收集多余列的键名,默认忽略。
restval :用于填充缺少列的值,默认None。
dialect :指定 CSV 的格式方言,默认excel,可自定义。
*args, **kwds :用于传递额外的格式化参数,如 delimiter、quotechar 等。

3. pandas.read_csv

pandas.read_csv

(filepath_or_buffer, sep=‘, ‘, delimiter=None, header=‘infer’, names=None, index_col=None, usecols=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, skipfooter=0, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, date_format=None, dayfirst=False, cache_dates=True, iterator=False, chunksize=None, compression=‘infer’, thousands=None, decimal=b’.’, lineterminator=None, quotechar=‘"’, quoting=0, doublequote=True, escapechar=None, comment=None, encoding=None, encoding_errors=‘strict’, dialect=None, on_bad_lines=‘error’, delim_whitespace=False, low_memory=True, memory_map=False, float_precision=None, storage_options=None)
读取csv,txt,tsv文件,返回DataFrame对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
filepath_or_buffer :文件路径或文件对象。
sep :指定字段之间的分隔符,默认是逗号 ,。
delimiter :指定字段之间的分隔符,默认是 None,与 sep 互斥。
header :指定列名所在的行,默认是 'infer',即自动推断。可以指定行号,如 0 表示第一行。
names :指定列名列表,默认是 None,即使用文件中的列名。
index_col :指定用作索引的列,默认是 None,即不使用任何列作为索引。
usecols :指定要读取的列,默认是 None,即读取所有列。
dtype :指定列的数据类型,默认是 None,即自动推断。
engine :指定解析引擎,默认是 'c',即 C 引擎。可选 'python'。
converters :指定列的转换函数,默认是 None。
true_values :指定表示 True 的值,默认是 None。
false_values :指定表示 False 的值,默认是 None。
na_values :指定表示缺失值的字符串,默认是 None。
keep_default_na :是否保留默认的缺失值,默认是 True。
skipinitialspace :忽略分隔符后的空格,默认是 False。
skiprows :指定要跳过的行,默认是 None,即不跳过任何行。可以指定行号,如 [0, 1] 表示跳过第一行和第二行。
skipfooter :指定要跳过的行数,默认是 0,即不跳过任何行。
nrows :指定要读取的行数,默认是 None,即读取所有行。
na_filter :是否过滤缺失值,默认是 True。
skip_blank_lines :是否跳过空行,默认是 True。
parse_dates :指定要解析为日期的列,默认是 False。
infer_datetime_format :是否自动推断日期格式,默认是 False。
comment :指定注释字符,默认是 None,即不忽略注释行。
encoding :指定文件编码,默认是 None,即自动推断。
encoding_errors :指定编码错误处理方式,默认是 'strict'。
low_memory :是否使用低内存模式,默认是 True。
memory_map :是否使用内存映射,默认是 False。
float_precision :指定浮点数精度,默认是 None。
storage_options :指定存储选项,默认是 None。

4. pandas

pandas.read_excel

(io, sheet_name=0, header=0, names=None, index_col=None, usecols=None, squeeze=False, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, parse_dates=False, date_parser=None, date_format=None, thousands=None, comment=None, skipfooter=0, storage_options=None, dtype_backend=‘numpy’)
读取xlsx,xlsm,xlsb文件,返回DataFrame对象
xlsx内容是二进制压缩文件,可解压,含有多个xml文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
io :文件路径或文件对象。
sheet_name :指定要读取的工作表,默认是 0,即第一个工作表。可以指定工作表名或索引。
header :指定列名所在的行,默认是 0,即第一行。可以指定行号,如 1 表示第二行。
names :指定列名列表,默认是 None,即使用文件中的列名。
index_col :指定用作索引的列,默认是 None,即不使用任何列作为索引。
usecols :指定要读取的列,默认是 None,即读取所有列。
dtype :指定列的数据类型,默认是 None,即自动推断。
engine :指定解析引擎,默认是 None,即自动推断。
converters :指定列的转换函数,默认是 None。
true_values :指定表示 True 的值,默认是 None。
false_values :指定表示 False 的值,默认是 None。
skiprows :指定要跳过的行,默认是 None,即不跳过任何行。可以指定行号,如 [0, 1] 表示跳过第一行和第二行。
nrows :指定要读取的行数,默认是 None,即读取所有行。
na_values :指定表示缺失值的字符串,默认是 None。
keep_default_na :是否保留默认的缺失值,默认是 True。
na_filter :是否过滤缺失值,默认是 True。

5. openpyxl

openpyxl.load_workbook

(filename, read_only=False, keep_vba=False, data_only=False, keep_links=True, storage_options=None)
读取excel文件,返回Workbook对象

1
2
3
4
5
filename :文件路径或文件对象。
read_only :是否以只读模式打开,默认是 False。
keep_vba :是否保留 VBA 宏,默认是 False。
data_only :是否只读取单元格的值,默认是 False。
keep_links :是否保留超链接,默认是 True。

6.xlrd

xlrd.open_workbook

(filename, logfile=None, verbosity=0, use_mmap=1, file_contents=None, encoding_override=None, formatting_info=False, on_demand=False, ragged_rows=False)
读取xls文件,返回Book对象

1
2
3
4
5
6
7
8
9
filename :文件路径或文件对象。
logfile :日志文件路径,默认是 None。
verbosity :日志级别,默认是 0。
use_mmap :是否使用内存映射,默认是 1。
file_contents :文件内容,默认是 None。
encoding_override :文件编码,默认是 None。
formatting_info :是否保留格式信息,默认是 False。
on_demand :是否按需加载,默认是 False。
ragged_rows :是否允许不规则的行,默认是 False。

7. json

json.load

(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

1
2
3
4
5
6
7
8
9
fp :一个支持 .read() 方法的文件对象
* :指定后续参数为关键字参数
cls :自定义 JSON 解码器的类,默认使用 json.JSONDecoder。如果你需要自定义解码逻辑,可以继承 JSONDecoder 并传入。
object_hook :≈数据读取后简单的"预处理",参数为dict格式。
parse_float :自定义浮点数解析函数。默认是 float。你可以替换为 decimal.Decimal 以提高精度。
parse_int :自定义整数解析函数。默认是 int。你可以替换为自定义函数,或者使用其他库如 numpy 的 int64。
parse_constant :一个函数,用于解析 JSON 中的常量:-Infinity, Infinity, NaN。可自定义常量解析函数。
object_pairs_hook :一个函数,用于处理 JSON 对象的键值对。默认是 dict。你可以替换为自定义函数,或者使用其他库如 collections.OrderedDict。
**kw :其他传递给 JSONDecoder 的参数。

json.loads

(s, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)

1
2
s :一个 JSON 格式的字符串
其他同上json.load()

8. yaml

yaml.load

(stream, Loader=yaml.Loader)
用于将 YAML 字符串或文件流解析为 Python dict对象。简单的load存在安全性问题,会执行输入中的代码

1
2
3
4
5
6
7
8
9
stream :字符串、字节流或文件对象
Loader :指定加载器,默认是 yaml.Loader。你可以替换为其他加载器,如 yaml.FullLoader。
Loader的区别在与对数据结构解析的复杂性以及安全性,二者基本不可兼得
| Loader | 安全性 | 是否支持 Python 对象 | 适用场景 |
Loader 不安全 是 完全信任的数据
SafeLoader 安全 否 用户输入、外部数据
FullLoader ️ 中等 是 复杂结构+一定安全性
UnsafeLoader 不安全 是 明确需要解析 Python 对象
BaseLoader 安全 否 仅解析结构,不转换类型

yaml.load_all(stream, Loader)

解析包含多个 YAML 文档的流(stream)的函数,需指定Loader
yaml文件中以"—"为文档分割线

yaml.safe_load(stream)

== load(stream, Loader=yaml.SafeLoader)

yaml.safe_load_all(stream)

== load_all(stream, Loader=yaml.SafeLoader)

yaml.unsafe_load(stream)

== load(stream, Loader=yaml.UnsafeLoader)

yaml.unsafe_load_all(stream)

== load_all(stream, Loader=yaml.UnsafeLoader)

yaml.full_load(stream)

== load(stream, Loader=yaml.FullLoader)

yaml.full_load_all(stream)

== load_all(stream, Loader=yaml.FullLoader)

9. xml.etree.ElementTree

xml.etree.ElementTree.parse

(source, parser=None)
解析 XML 文件并返回一个 ElementTree 对象。

1
2
source 可以是文件名、文件对象或文件路径。
parser 是可选的解析器对象,默认XMLParser。

xml.etree.ElementTree.fromstring

(text, parser=None)
解析 XML 字符串并返回一个 Element 对象。

xml.etree.ElementTree.iterparse

(source, events=None, parser=None)
增量解析:
不会一次性加载整个 XML 文件,而是逐块读取并解析,适合处理大文件。
返回一个迭代器,每次生成一个 (event, elem) 元组。
事件驱动:
可以监听解析过程中的事件(如元素开始、结束、命名空间声明等)。
常见事件:
“start”:元素开始解析时触发。
“end”:元素解析完成时触发(此时可以访问元素的完整内容)。
“start-ns”:命名空间开始声明时触发。
“end-ns”:命名空间结束声明时触发。
内存优化:
解析完成后,建议手动调用 elem.clear() 清理已处理的元素,避免内存泄漏。

10. configparser

configparser.ConfigParser().read

(filenames, encoding=None)
读取配置文件,返回一个字典,键为section,值为section中的键值对

1
2
filenames :一个文件名列表,ConfigParser 会按顺序读取这些文件,后面的文件会覆盖前面的同名配置。
encoding :指定文件的编码格式,默认为 None,即使用系统默认编码。

二. (反)序列化文件

11. pickle

pickle.load

(file, *, fix_imports=True, encoding=‘ASCII’, errors=‘strict’, buffers=None)
从文件中读取并反序列化对象。

1
2
3
4
5
file :一个支持 .read() 方法的文件对象,通常是通过 open() 打开的文件。
fix_imports :布尔值,默认为 True。如果为 True,pickle 将尝试修复 Python 2 和 Python 3 之间的导入差异。
encoding :指定字符串的编码格式,默认为 'ASCII'。 ASCII latin1 bytes
errors :指定字符串编码错误的处理方式,默认为 'strict'。strict ignore replace
buffers :一个可迭代对象,用于提供原始二进制数据。如果提供,pickle 将直接从该对象读取数据,而不是从文件中读取。

三. 二进制文件

12. numpy

numpy.loadtxt

(fname, dtype=float, comments=‘#’, delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding=‘bytes’, max_rows=None)
读取文本文件并返回一个 NumPy 数组。

1
2
3
4
5
6
7
8
9
10
11
fname :文件名或文件对象。
dtype :数据类型,默认为 float。
comments :注释字符,默认为 '#'。
delimiter :分隔符,默认为 None,即使用默认分隔符(通常是空格或制表符)。
converters :一个字典,用于将特定列转换为特定类型。
skiprows :跳过的行数,默认为 0。有表头应设置为1忽略
usecols :要读取的列,默认为 None,即读取所有列。与pandas.read_csv()中的usecols不同,此处使用数字
unpack :如果为 True,则将每列拆分为单独的数组(类似 zip(*data))。。
ndmin :返回数组的最小维数,默认为 0。
encoding :文件的编码格式,默认为 'bytes'。
max_rows :要读取的最大行数,默认为 None,即读取所有行。

numpy.load

(fname, mmap_mode=None, allow_pickle=False, fix_imports=True, encoding=‘ASCII’, errors=‘strict’)
从文件中读取并返回一个 NumPy 数组。

1
2
3
4
5
6
fname :文件名或文件对象。
mmap_mode :内存映射模式,默认为 None。如果为 None,则不使用内存映射。
allow_pickle :是否允许加载 pickle 格式的数据,默认为 False。
fix_imports :是否修复 Python 2 和 Python 3 之间的导入差异,默认为 True。
encoding :字符串的编码格式,默认为 'ASCII'。
errors :字符串编码错误的处理方式,默认为 'strict'。

四. 图片文件

13. PIL.Image

Image.open

(fp, mode=‘r’, formats=None)
打开并返回一个 Image 对象。

1
2
3
fp :一个文件名、文件对象或类似文件的对象。
mode :打开文件的模式,默认且仅为 'r'(读取)。
formats :一个可选的格式列表,用于指定支持的图像格式。

五. 压缩文件

14. tarfile

tarfile.open

(name=None, mode=‘r’, fileobj=None, bufsize=10240, **kwargs)
打开tar, tar.gz压缩文件并返回一个 TarFile 对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
name :文件名或文件对象。
mode :打开文件的模式,默认为 'r'(读取)。
‘r’ 读取未压缩的 tar 文件
‘r:gz’ 读取 gzip 压缩的 tar 文件
‘r:bz2’ 读取 bzip2 压缩的 tar 文件
‘r:xz’ 读取 xz 压缩的 tar 文件
‘w’ 写入未压缩的 tar 文件
‘w:gz’ 写入 gzip 压缩的 tar 文件
‘w:bz2’ 写入 bzip2 压缩的 tar 文件
‘w:xz’ 写入 xz 压缩的 tar 文件
‘a’ 追加内容到现有 tar 文件
fileobj :一个已打开的文件对象,默认为 None。
bufsize :缓冲区大小,默认为 10240。
**kwargs :其他参数,如压缩格式等。

15. gzip

gzip.open

(fileobj, mode=‘rb’, compresslevel=9)
打开gz压缩文件并返回一个 GzipFile 对象。

1
2
3
4
5
6
7
8
9
10
11
fileobj :一个文件对象,用于读取或写入 gzip 压缩的数据。
mode :打开文件的模式,默认为 'rb'(读取二进制)。
‘rb’ 二进制读模式(默认)
‘wb’ 二进制写模式
‘rt’ 文本读模式
‘wt’ 文本写模式
‘ab’ 二进制追加模式
‘at’ 文本追加模式
compresslevel :压缩级别,默认为 9(最高压缩级别)。
encoding :指定文本编码,默认为 'utf-8'。
errors :指定文本编码错误的处理方式,默认为 'strict'。

15. zipfile

zipfile.ZipFile

(name, mode=‘r’, compression=zipfile.ZIP_STORED, allowZip64=True, compresslevel=None)
打开zip压缩文件并返回一个 ZipFile 对象。

1
2
3
4
5
6
7
8
name :文件名或文件对象。
mode :打开文件的模式,默认为 'r'(读取)。
‘r’ 读取已压缩的 zip 文件
‘w’ 写入新的 zip 文件
‘a’ 追加内容到现有 zip 文件
compression :压缩格式,默认为 ZIP_STORED(不压缩)。
allowZip64 :是否允许使用 ZIP64 格式,默认为 True。
compresslevel :压缩级别,默认为 None,即使用默认级别。

六. 大型数据文件

16. h5py

h5py.File

(name, mode=‘r’, driver=None, libver=None, userblock_size=None, swmr=False, rdcc_nbytes=None, rdcc_nslots=None, rdcc_w0=None, track_order=None, **kwds)
打开 h5 文件并返回一个 File 对象。keras2系列的tensorflow保存数据和模型为.h5文件,而keras3保存为.keras文件

1
2
3
4
5
6
7
8
9
10
11
name :文件名或文件对象。
mode :打开文件的模式,默认为 'r'(读取)。
driver :驱动程序,默认为 None。
libver :库版本,默认为 None。
userblock_size :用户块大小,默认为 None。
swmr :是否启用共享写模式读取,默认为 False。
rdcc_nbytes :RDCache 缓冲区大小,默认为 None。
rdcc_nslots :RDCache 插槽数,默认为 None。
rdcc_w0 :RDCache 写入比例,默认为 None。
track_order :是否跟踪数据顺序,默认为 None。
**kwds :其他参数。

17. LMDB

lmdb.open

(path, map_size=2**32, max_readers=1000, readonly=False, meminit=True, map_async=False, mode=0o660, lock=True, readahead=True, metasync=True, sync=True, map_size_limit=None)
打开 LMDB 数据库并返回一个 Environment 对象。

1
2
3
4
5
6
7
8
9
10
11
12
path :数据库路径。
map_size :数据库大小,默认为 4GB。
max_readers :最大读取器数量,默认为 1000。
readonly :是否以只读模式打开数据库,默认为 False。
meminit :是否初始化内存,默认为 True。
map_async :是否异步映射数据库,默认为 False。
mode :文件权限,默认为 0o660。
lock :是否使用文件锁,默认为 True。
readahead :是否预读数据,默认为 True。
metasync :是否同步元数据,默认为 True。
sync :是否同步数据,默认为 True。
map_size_limit :数据库大小限制,默认为 None。

18. pyarrow

pyarrow.csv.read_csv

(source, read_options=None, parse_options=None, **kwargs)
从 CSV 文件中读取数据并返回一个 Table 对象。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
source :CSV 文件路径或文件对象。
read_options :一个 ReadOptions 对象,用于指定读取选项。
pyarrow.csv.ReadOptions(
use_threads=True,
block_size=256*1024*1024,
encoding='utf8',
skip_rows=1,
column_names=['id', 'name', 'value']
autogenerate_column_names=False
)
parse_options :一个 ParseOptions 对象,用于指定解析选项。
pyarrow.csv.ParseOptions(
delimiter='|',
quote_char="'",
double_quote=False,
newlines_in_values=False
)
**kwargs :其他参数,如列名等。

pyarrow.parquet.read_table

(source, columns=None, use_threads=True, read_dictionary=False, filters=None, metadata=None, chunk_size=None, **kwargs)
从 Parquet 文件中读取数据并返回一个 Table 对象。

1
2
3
4
5
6
7
source :Parquet 文件路径或文件对象。
columns :要读取的列名列表,默认为 None,即读取所有列。
use_threads :是否使用多线程,默认为 True。
read_dictionary :是否读取字典编码的列,默认为 False。
filters :一个 Filter 对象,用于指定过滤条件。
metadata :一个 ParquetMetadata 对象,用于指定元数据。
**kwargs :其他参数。

七. 数据库

MySQL

mysql.connector.connect

(host=None, user=None, password=None, database=None, port=3306, ssl_ca=None, ssl_cert=None, ssl_key=None, ssl_disabled=False, use_unicode=True, charset=‘utf8mb4’, collation=‘utf8mb4_unicode_ci’, autocommit=False, buffered=True, local_infile=False, connect_timeout=10, init_command=None, client_flag=0, conv=py3conv, auth_plugin=None, **kwargs)
连接 MySQL 数据库并返回一个 MySQLConnection 对象。
尝试连接SQLExpress2022本地数据库,连接失败,以下参数仅作参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
host :数据库主机名,默认为 None。
user :数据库用户名,默认为 None。
password :数据库密码,默认为 None。
database :数据库名,默认为 None。
port :数据库端口号,默认为 3306。
ssl_ca :SSL 证书颁发机构文件路径,默认为 None。
ssl_cert :SSL 证书文件路径,默认为 None。
ssl_key :SSL 密钥文件路径,默认为 None。
ssl_disabled :是否禁用 SSL,默认为 False。
use_unicode :是否使用 Unicode,默认为 True。
charset :字符集,默认为 'utf8mb4'。
collation :排序规则,默认为 'utf8mb4_unicode_ci'。
autocommit :是否自动提交事务,默认为 False。
buffered :是否使用缓冲区,默认为 True。
local_infile :是否允许本地文件加载,默认为 False。
connect_timeout :连接超时时间,默认为 10 秒。
init_command :初始化命令,默认为 None。
client_flag :客户端标志,默认为 0。
conv :转换函数,默认为 py3conv。
auth_plugin :认证插件,默认为 None。
**kwargs :其他参数。

PostgreSQL

psycopg2.connect

(dsn=None, connection_factory=None, cursor_factory=None, transaction_factory=None, async=False, **kwargs)
连接 PostgreSQL 数据库并返回一个 connection 对象。

1
2
dsn :连接字符串,格式为 'dbname=数据库名 user=用户名 password=密码 host=主机名 port=端口号',默认为 None。
也可将dsn分开

SQLite

sqlite3.connect

Oracle

cx_Oracle.connect

SQL Server

pymssql.connect

MongoDB

pymongo.MongoClient

Redis

redis.Redis

SQLAlchemy

sqlalchemy.create_engine

Django ORM