- 博客(152)
- 资源 (4)
- 收藏
- 关注
原创 Python Cookbook-7.14 利用 dtuple 实现对查询结果的灵活访问
本文介绍了如何灵活访问数据库查询结果的方法。通过Greg Stein的dtuple模块,可以将数据库行转换为既能通过数字下标又能通过列名或属性访问的对象。文章提供了使用mxODBC和dtuple的代码示例,展示了如何创建TupleDescriptor和DatabaseTuple对象来简化数据库操作。此外,还讨论了动态获取字段名的方法,并提到了其他类似解决方案如Python Database Row Module和pysqlite。这种方法提高了代码的可读性和维护性,解决了传统元组访问方式晦涩难懂的问题。
2025-06-08 22:53:35
120
原创 Python Cookbook-7.13 生成一个字典将字段名映射为列号
本文介绍了如何通过字段名访问数据库查询结果,而不依赖列号。通过DB API游标的description属性创建字段名到列号的映射字典,可以更健壮地访问数据。示例展示了使用字典和封装类两种方法,并建议使用现有的dbtuple模块而非重复造轮子。这种方法提高了代码可读性,避免因数据库模式变化导致的列号失效问题。 (150字)
2025-06-08 22:39:36
128
原创 Python Cookbook-7.12 在 SQLite 中储存 BLOB
本文介绍了如何在SQLite数据库中存储BLOB(二进制大对象)数据。通过Python的PySQLite扩展,可以使用sqlite.encode函数处理二进制数据。文章展示了如何创建Blob类来自动转换二进制串,并演示了从创建内存数据库、建表、插入BLOB数据到查询恢复的完整流程。特别说明SQLite本身不直接支持二进制数据,但PySQLite扩展能正确处理BLOB字段类型,并通过sqlite.encode/sqlite.decode函数进行转义处理。该方法适用于需要存储序列化Python对象等二进制数据的
2025-06-07 21:36:16
289
原创 Python Cookbook-7.11 在 PostgreSQL 中储存 BLOB
摘要:本文介绍了如何在PostgreSQL数据库中存储BLOB数据。PostgreSQL 7.2及以上版本支持大对象存储,通过psycopg模块的Binary函数可实现二进制数据转义。示例代码展示了创建测试表、使用cPickle序列化数据、插入二进制数据及验证的过程。最后提到PostgreSQL 7.1+版本通过TOAST项目解决了字段大小限制问题,不再需要旧版本中的迂回存储方法。文章强调使用psycopg.Binary函数可简化二进制数据的SQL操作。(150字)
2025-06-07 21:21:13
329
原创 Python Cookbook-7.10 在 MySQL 数据库中储存 BLOB
本文介绍了如何将二进制大对象(BLOB)存储到MySQL数据库中,并提供了一个Python实现示例。由于MySQLdb模块不支持完整的占位符,可以使用escape_string函数来处理二进制数据的转义问题。示例中,首先创建了一个测试表,然后使用cPickle.dumps将Python对象序列化为BLOB数据,并通过escape_string函数将其插入到数据库中。最后,为了确保数据完整性,示例还展示了如何从数据库中读取并反序列化BLOB数据。文章还提到,如果使用较新的MySQL和MySQLdb版本,可能无
2025-05-11 21:32:24
97
原创 Python Cookbook-7.9 访问 MySQL 数据库
要访问MySQL数据库,可以使用Python的MySQLdb模块。首先,通过MySQLdb.connect()函数创建连接对象,指定主机、端口、用户名、密码和数据库名等参数。然后,使用连接对象的cursor()方法创建游标对象,通过游标执行SQL查询,如SELECT * FROM Users,并使用fetchall()方法获取所有查询结果。最后,关闭连接以释放资源。MySQLdb模块基于Python DB API 2.0,适用于Python 2.3及以上版本和MySQL 3.22至4.0版本。虽然MySQL
2025-05-11 21:23:35
215
原创 Python Cookbook-7.8 使用 Berkeley DB 数据库
你想将一些数据做持久化处理,而且也想体验一下BerkeleyDB数据库的简洁和高效。
2025-05-08 22:29:34
1460
原创 Python Cookbook-7.7 通过 shelve 修改对象
你正在使用标准库模块shelve。你用shelve处理过的一些值是易变的对象(mutableobjects),而且你需要修改这些对象。
2025-05-08 21:45:00
925
原创 Python Cookbook-7.6 Pickling 代码对象
你想对代码对象进行 pickle 处理,但标准库的 pickle 模块并不支持这个功能。
2025-05-07 21:13:48
1083
原创 Python Cookbook-7.5 Pickling 被绑定方法
需要 pickle 一个对象,但是该对象持有(作为属性或子项)另一个对象的被绑定方法,而被绑定方法是无法被 pickle 处理的。
2025-05-07 20:45:19
321
原创 Python Cookbook-7.2 使用 pickle 和 cPickle 模块序列化数据
你想以某种可以接受的速度序列化和重建Python 数据结构,这些数据既包括基本Python 对象也包括类和实例。
2025-05-05 19:28:45
969
原创 Python Cookbook-7.1 使用 marshal模块序列化数据
想以尽量快的速度来序列化并重新构造那些由基本Python 对象(比如列表、元组数字和字符串,但不包括类、类实例等)构成的数据结构。
2025-05-05 07:00:00
643
原创 Python Cookbook-6.20 精确和安全地使用协作的超类调用
你很欣赏通过内建的super 来支持的多继承的代码的协作方式,但同时你也希望能够更加简洁和精确地使用这种方式。
2025-05-04 17:30:00
497
原创 Python Cookbook-6.19 调用超类的__init__方法
想确保所有的超类的__init__方法被自动调用(如果该超类定义过__init__方法)但 Python 并不会自动调用此方法。
2025-05-04 12:30:00
903
原创 Python Cookbook-6.18 用__init__参数自动初始化实例变量
想避免编写和维护一种烦人的几乎什么也不做的__init__方法,这种方法中含有一大堆形如 self.something = something 的赋值语句。
2025-05-03 17:30:00
418
原创 Python Cookbook-6.16 用 Borg 惯用法来避免“单例”模式
Borg 对于那种把所有或者部分状态保存在__dict__之外的类并不太适用。因此,在 Borg的子类中,避免定义__slots__以优化内存占用并没有什么意义,虽然它是为那些有很多实例的类设计的,但 Borg 的子类会只拥有一个实例。而且,不要从内建类型如 list或 dict 派生,你的 Borg 子类应该进行一些封装工作并自动委托,如前面 6.5 节所示(我把后者称为“DeleBorg”,读者可以在 http://www,aleax.it/Sep.html 读到文章。
2025-05-02 15:30:00
599
原创 Python Cookbook-6.14 实现状态设计模式
你希望你程序中的某个对象能在不同的“状态”之间切换,而且该对象的行为方式也能随着状态的变化而变化。
2025-05-01 21:09:24
612
原创 Python Cookbook-6.13 检查一个对象是否包含某种必要的属性
多态(polyimorphism,其希腊词根意味着“很多形状”)是代码的一种能够以适当的方式处理各种不同类型对象的能力。不过,这个有用的概念已经在某种程度上被曲解了,很多人常常把多态和重载(即在调用时根据签名确定使用不同的函数)或者子类型(子类)联系起来,但其实这个概念远不止于此子类化是一种有用的实现技术,但对多态而言并不是必要条件。重载则明确多了:Python。
2025-05-01 15:45:45
948
原创 Python Cookbook-6.12 检查一个实例的状态变化
一个实例在上次“保存”操作之后又被修改了,需要检查它的状态变化以便有选择地保存此实例。
2025-05-01 15:04:07
812
原创 Python Cookbook-6.11 缓存环的实现
你想定义一个固定尺寸的缓存,当它被填满时,新加入的元素会覆盖第一个(最老的)元素。这种数据结构在存储日志和历史信息时非常有用。
2025-04-26 18:54:53
785
原创 Python Cookbook-6.10 保留对被绑定方法的引用且支持垃圾回收
你想保存一些指向被绑定方法的引用,同时还需要让关联的对象可以被垃圾收集机制处理。
2025-04-26 18:02:47
661
原创 Python Cookbook-6.9 快速复制对象
为了使用 copy.copy,需要实现特殊方法__copy__。而且你的类的__init__比较耗时所以你希望能够绕过它并获得一个“空的”未初始化的类实例。
2025-04-25 22:30:59
921
原创 Python Cookbook-6.8 避免属性读写的冗余代码
你的类会用到某些 property 实例,而 getter 或者 setter 都是一些千篇一律的获取或者设置实例属性的代码。你希望只用指定属性名,而不用写那些非常相似的代码。
2025-04-25 22:18:18
323
原创 Python Cookbook-6.7 有命名子项的元组
Python 元组可以很方便地被用来将信息分组,但是访问每个子项都需要使用数字索引,所以这种用法有点不便。你希望能够创建一种可以通过名字属性访问的元组。
2025-04-21 22:00:54
431
原创 Python Cookbook-6.6 在代理中托管特殊方法
在新风格对象模型中,Python 操作其实是在类中查找特殊方法的(而不是在实例中那是经典对象模型的处理方式)。现在,需要将一些新风格的实例包装到代理类中,此代理可以选择将一些特殊方法委托给内部的被包装对象。
2025-04-21 21:32:09
639
原创 Python Cookbook-6.5 继承的替代方案——自动托管
你需要从某个类或者类型继承,但是需要对继承做一些调整。比如,需要选择性地隐藏某些基类的方法,而继承并不能做到这一点。
2025-04-16 20:23:40
702
原创 Python Cookbook-6.4 链式字典查询
你有一些映射(通常是dict),而且你想在这些映射中以一种链式的方式进行查询(首先在第一个映射中查找;如果键不在其中,尝试第二个;以此类推)。准确地说,你需要的是一个单一的映射,这个映射跨越了许多“虚拟融合”的映射对象,而且可以在其中以指定的优先级顺序进行查询,这样的结构可以在使用上带来很多方便。
2025-04-16 19:48:46
361
原创 Python Cookbook-6.3 限制属性的设置
通常情况下,Python 允许你随意给类和类实例增加属性。但对于某些特定的类,你却希望这种自由受到限制。
2025-04-14 22:10:17
547
原创 Python Cookbook-6.1 温标的转换
想在开氏温度(Kelvin)、摄氏度(Celsius)、华氏温度(Fahrenheit)以及兰金(Rankine)温度之间做转换。
2025-04-13 00:41:06
382
1
原创 Python Cookbook-5.15 根据姓的首字母将人名排序和分组
想将一组人名写入一个地址簿,同时还希望地址簿能够根据姓的首字母进行分组,且按照字母顺序表排序。Python 2.4 的新 itertools.groupby 函数使得这个任务很简单:讨论本节解决方案中的 name_iterable 必须是一个可迭代对象,它的元素是遵循名-中名-姓格式的人名字符串,其中中名是可选的且各部分以空格隔开。对这个可选代对象调用groupnames 得到的结果是一个字典,它的键是姓的首字母,而对应的值则是完整的名中名和姓的构成的元组。不管是“名姓”还是“名 中名 姓”的格式,辅助
2025-04-12 21:30:08
362
原创 Python Cookbook-5.14 给字典类型增加排名功能
你需要用字典存储一些键和“分数”的映射关系。你经常需要以自然顺序(即以分数的升序)访问键和分数值,并能够根据那个顺序检查一个键的排名。对这个问题,用dict 似乎不太合适。
2025-04-12 21:21:35
640
原创 Python Cookbook-5.12 检查序列的成员
你需要对一个列表执行很频繁的成员资格检査。而in操作符的 O(n)时间复杂度对性能的影响很大,你也不能将序列转化为一个字典或者集合,因为你还需要保留原序列的元素顺序。
2025-04-10 21:59:54
1012
原创 Python Cookbook-5.10 选取序列中最小的第 n个元素
需要根据排名顺序从序列中获得第n个元素(比如,中间的元素,也被称为中值)。如果序列是已经排序的状态,应该使用seq[n],但如果序列还未被排序,那么除了先对整个序列进行排序之外,还有没有更好的方法?
2025-04-09 22:05:54
1023
PyFR-develop.zip
2025-04-01
SWMM雨水管理模型5.2版(内含源码)
2025-02-16
Python基于有限差分法实现一维波动方程.py
2025-02-14
深度学习入门-基于Python的理论与实现(pdf+代码)
2025-02-14
DeepSeek多场景AI应用教程-15天掌握高效人机协作
2025-02-11
基于LBM的方形空腔流动
2024-02-21
Dev-Cpp-5.16i编译器
2023-10-24
基于Python爬取链家网上北、上、广租房信息
2023-10-24
基于python有限差分的二维浅水方程,对求解问题进行建模,动量方程线性化,连续性方程非线性求解
2023-08-21
水力模拟HEC-RAS 6.2
2023-08-11
水利工程中河流HEC-RAS模拟计算软件案例
2023-08-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人