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

这篇具有很好参考价值的文章主要介绍了菜鸟的Python学习笔记_源码阅读1_records(part1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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


PART_1 - records引入的包(部分)


1. from sys import stdout

  • 说明:标准输出流
  • 具体请参考:(https://pythonjishu.com/python-sys-stdout/)[https://pythonjishu.com/python-sys-stdout/]

2. os.environ

  • 作用:用于获取系统环境变量
  • 环境变量的增删改查可参考:https://blog.csdn.net/ad72182009/article/details/116117744

3. from collections import OrderedDict

作用:collections模块是用于提供一些高级数据结构,用于处理各种类型的集合。这些数据结构有助于提高代码的可读性和可维护性,同时也可以用于实现一些常用的算法。
主要内容:文章来源地址https://www.toymoban.com/news/detail-712098.html

  • 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(): 这是一个上下文管理器,用于捕获并忽略一个异常。
  • Ps: with...as...就是一种上下文管理器,可以使用contextmanager自定义上下文管理器
  • 参考:https://www.cnblogs.com/belle-ls/p/11506036.html

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()

到了这里,关于菜鸟的Python学习笔记_源码阅读1_records(part1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Redis项目 PART1

    第一部分:含注册登入+商户查询(使用缓存) 使用redis而不用传统的session的原因(session共享问题):每个tomcat中都有一份属于自己的session,假设用户第一次访问第一台tomcat,并且把自己的信息存放到第一台服务器的session中,但是第二次这个用户访问到了第二台tomcat,那么在第

    2024年02月16日
    浏览(30)
  • 计算机网络 Part1

    目录 计算机网络的一些术语: 计算机网络的重点: 整体结构以及HTTP部分一些问题: TCP以及UDP相关的问题: DNS以及网络安全相关的问题: 1. OSI七层模型的每一层分别是什么?对应的协议有哪些? 传输层协议和网络层协议有什么区别?   HTTP协议为什么设计为无状态的? H

    2024年02月12日
    浏览(29)
  • SwiftUI 布局协议 - Part1

    今年 SwiftUI 新增最好的功能之一必须是布局协议。它不但让我们参与到布局过程中,而且也给了我们一个很好的机会去更好的理解布局在 SwiftUI 中的作用。 早在2019年,我写了一篇文章 SwiftUI 中 frame 的表现 ,其中,我阐述了父视图和子视图如何协调形成最终视图效果。那里描

    2024年02月05日
    浏览(33)
  • Leetcode with Golang 滑动窗口 Part1

    滑动窗口的定义: 滑动窗口这一个技巧主要运用于处理数组问题上,一般用于“子串”问题。精髓是,维护一个里面装着元素的“窗口”,在将新元素装进“窗口”的同时,根据题意,把不符合题意的元素踢出“窗口”。 滑动窗口的模板: 接下来看几道题目: Leetcode 209.长

    2024年01月19日
    浏览(29)
  • 当代软件工程师技术面试准备Part1

    当代软件工程师技术面试准备Part1 一. 编码 - Leetcode     LeetCode 是一个在线的编程练习平台,专注于帮助程序员提升他们的编程技能。该平台提供了大量的算法和数据结构问题,涵盖了各种难度级别,从简单到困难。LeetCode的主要目标是帮助程序员准备技术面试,特别是在软

    2024年02月03日
    浏览(38)
  • NzN的数据结构--二叉树part1

            你叉叉,让你学数据结构你不学;你叉叉,让你看二叉树你不看。 今天我们来一起学习二叉树部分, 先赞后看是好习惯 。           树是一种 非线性 的数据结构,它是由n(n=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂

    2024年04月13日
    浏览(62)
  • C/C++文件操作(细节满满,part1)

    个人主页: 仍有未知等待探索_C语言疑难,数据结构,PTA-CSDN博客 专题分栏: C语言疑难_仍有未知等待探索的博客-CSDN博客 目录 一、引言  二、什么是文件  1、程序文件 2、数据文件 3、文件名  4、文件路径  1.相对路径 2.绝对路径 三、文件的打开和关闭  1、文件操作的大体流

    2024年02月08日
    浏览(26)
  • 使用go语言构建区块链 Part1.基础原型

    英文源地址 区块链技术是21世纪最具变革型的技术之一,它仍处于成长阶段, 其潜力尚未完全实现.从本质上说, 区块链是一个分布式的记账数据库.但它的独特之处在于它不是一个私有数据库,而是一个公共数据库, 也就是说, 每个使用它的人都有它的完整或部分副本.而且,只有在

    2024年02月07日
    浏览(40)
  • 【UE4 RTS】11-HUD functionality Part1

    本篇实现了将游戏状态中的游戏时间和游戏日期通过蓝图接口的方式传递给控件蓝图,并且正确显示,另外还实现了控件蓝图界面上切换12小时和24小时制的游戏时间显示方式。 一、显示游戏日期 1. 打开蓝图接口“RTS_GameTime_IF” 添加一个新函数,命名为“SetGameClock”  添加函

    2024年02月12日
    浏览(28)
  • 第七章:敏捷开发工具方法-part1-敏捷开发基础

    敏捷开发背景 速度是企业竞争致胜的关键因素,软件项目的最大挑战在于一方面需要应付变动中的需求,一方面需要在有限的时间完成项目,传统的软件工程难以满足这些要求 所以软件团队除了在技术上必须日益精进,更需要运用有效的开发流程,以确保团队能够发挥综效

    2024年02月09日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包