Live2D

菜鸟的Python学习笔记_源码阅读1_records(part1)

records---使用原生sql,可以操作大多数的关系型数据库


PART_1 - records引入的包(部分)


1. from sys import stdout


2. os.environ


3. from collections import OrderedDict

作用:collections模块是用于提供一些高级数据结构,用于处理各种类型的集合。这些数据结构有助于提高代码的可读性和可维护性,同时也可以用于实现一些常用的算法。
主要内容:

  • Counter:一个简单的计数器,用于统计一个字典中各个键出现的次数。
  • defaultdict:一个字典的副本,当对字典中的某个键进行操作时,如果键不存在,则创建一个新的键值对。
  • deque:一个双端队列,用于实现队列和堆栈的功能。
  • OrderedDict:一个有序字典,用于保存字典中的键值对,且其中的键值对按照插入顺序进行排序。
  • ChainMap:一个链式字典,用于合并多个字典,使得对其中任何一个键的访问都返回对应的值。
  • Counter和OrderedDict都实现了__missing__方法,当对不存在于字典中的键进行操作时,会返回一个默认值。
  • namedtuple:一个创建具有命名的字段和默认值的元组的工具。
  • UserDict:一个抽象基类,用于实现一个简单的字典。
  • UserList:一个抽象基类,用于实现一个简单的列表。
  • Itertools:一个包含各种迭代工具的模块,例如无限迭代器、组合迭代器等。

4. from contextlib import contextmanager

  • 作用:contextlib模块提供了一个用于生成上下文管理器的工具。上下文管理器是一种用于自动处理资源分配和释放的声明式编程方式。在Python中,上下文管理器是一种用于处理资源分配和释放的声明式编程方式。它们通常用于with语句中,确保在with语句块结束时,资源被正确释放。
  • 主要内容:
  • contextlib.contextmanager(): 这是一个装饰器,用于将一个生成器函数转换为上下文管理器。
  • contextlib.closing(): 这是一个上下文管理器,用于自动关闭一个资源。
  • contextlib.suppress(): 这是一个上下文管理器,用于捕获并忽略一个异常。

5. from inspect import isclass

  • 作用:inspect模块用于检查Python代码的对象,如模块、类、方法、函数等。它可以帮助你获取模块、类的属性和方法、函数的参数等信息。
  • 主要内容:
  • inspect.getmodule(): 这是一个函数,用于获取一个模块对象。
  • inspect.getmembers(): 这是一个函数,用于获取一个模块中所有成员的名称和对象。
  • inspect.ismodule(): 这是一个函数,用于检查一个对象是否为模块。
  • inspect.isclass(): 这是一个函数,用于检查一个对象是否为类。
  • inspect.ismethod(): 这是一个函数,用于检查一个对象是否为方法。
  • inspect.isfunction(): 这是一个函数,用于检查一个对象是否为函数。
  • inspect.signature(): 这是一个函数,用于获取一个函数的签名。
#示例:
import inspect

def my_function(a, b, c):
  pass

# 获取一个函数的签名
signature = inspect.signature(my_function)
print(signature)

# 获取一个模块中所有成员的名称和对象
members = inspect.getmembers(inspect)
for name, obj in members:
    print(f"{name}: {obj}")

6. import tablib

  • 作用:tablib模块是一个用于处理表格数据的库。它提供了多种数据格式,如CSV、JSON、XLSX等,以及用于创建、操作和格式化表格数据的类。tablib模块可以帮助你轻松地处理各种表格数据操作,如合并表格、排序表格等。
  • 主要内容:
  • tablib.Dataset(): 这是一个用于创建和操作表格数据的类。
  • tablib.Table(): 这是一个用于创建和操作表格数据的类。
  • tablib.Format(): 这是一个用于定义数据格式的类。
  • tablib.Package(): 这是一个用于将多个数据格式组合成一个包的类。
#示例:
from tablib import Dataset

data = [
   ['Name', 'Age', 'City'],
   ['Alice', 30, 'New York'],
   ['Bob', 25, 'San Francisco'],
   ['Charlie', 22, 'Los Angeles']
]

dataset = Dataset(*data)

# 将表格数据写入CSV文件
with open('output.csv', 'wb') as f:
   f.write(dataset.export('csv'))

# 将表格数据写入XLSX文件
with open('output.xlsx', 'wb') as f:
   f.write(dataset.export('xlsx'))  

7. from docopt import docopt

  • 作用:docopt模块是一个用于解析命令行参数的库。它可以帮助你根据命令行参数的定义来生成相应的帮助文档和处理命令行参数。docopt模块基于命令行参数的名称来生成相应的帮助文档,使得用户能够通过命令行参数来指定配置文件、操作等。
  • 主要内容:
  • docopt.docopt(): 这是一个用于解析命令行参数的函数。它接受一个参数,即命令行参数的定义,返回一个包含解析结果的字典。
  • docopt.DocoptExit(): 这是一个异常类,用于在解析命令行参数时出现错误时抛出。
  • Ps: docopt源码也适合作为阅读的对象

8. from sqlalchemy import create_engine,exc,inspect,text

  • 作用:sqlalchemy模块是一个用于处理SQL查询的库。它提供了一个高级的ORM(对象关系映射)以及一个底层的SQL表达式语言。sqlalchemy模块可以帮助你轻松地执行数据库操作,如查询、插入、更新和删除等。
  • 主要内容:
  • sqlalchemy.create_engine(): 这是一个函数,用于创建一个数据库引擎。
  • sqlalchemy.Column(): 这是一个类,用于定义数据库表的列。
  • sqlalchemy.Integer(): 这是一个类,用于表示整数类型。
  • sqlalchemy.String(): 这是一个类,用于表示字符串类型。
  • sqlalchemy.MetaData(): 这是一个类,用于定义数据库表的元数据。
  • sqlalchemy.Table(): 这是一个类,用于定义数据库表。
  • sqlalchemy.select(): 这是一个类,用于构建SQL查询。
#示例:
from sqlalchemy import create_engine, Column, Integer, String, MetaData, Table, select

# 定义一个数据库引擎
engine = create_engine('sqlite:///example.db')

# 定义一个数据库表
metadata = MetaData()
users = Table('users', metadata,
             Column('id', Integer, primary_key=True),
             Column('name', String),
             Column('age', Integer))

# 创建表
metadata.create_all(engine)

# 插入一条数据
ins = users.insert().values(name='Alice', age=30)
conn = engine.connect()
conn.execute(ins)

# 执行一个查询
s = select([users])
result = conn.execute(s)
rows = result.fetchall()

# 打印查询结果
for row in rows:
 print(row)

# 关闭连接
conn.close()

posted @ 2023-09-22 02:28  普利斯-阔米-菜基  阅读(112)  评论(0编辑  收藏  举报