使用C语言编写Python扩展5——垃圾回收管理

上一节介绍了创建一个具有属性的类,由于对象具有属性数据,因此在进行内存管理时要多加注意。这一节就介绍一下Python的垃圾回收管理。 在Python中垃圾回收主要是靠的计数引用方法,但是单凭计数引用还是不够的。......阅读全文

发表在 Python栏目 | 标签为 , | 留下评论

使用C语言编写Python扩展4——创建自定义类型(2)

上一节中我们创建了一个简单的类。这一节我们将对这个类进行扩展,添加属性、方法,并且支持子类。 为类型添加方法和数据 接着上一节的例子,继续编辑noddy.c。 typedef struct { PyObject_HEAD /* Typ......阅读全文

发表在 Python栏目 | 标签为 , | 留下评论

使用C语言编写Python扩展3——创建自定义类型(1)

在Python代码中如果要创建一个自定义类使用class关键字即可,但是在C代码中就没那么方便了。 首先简单介绍下Python中的类型。在python中一切皆对象,python中有两种对象: 一种是类型对象(class对象):表示Pyth......阅读全文

发表在 Python栏目 | 标签为 , | 留下评论

使用C语言编写Python扩展2——函数

上一节介绍了编写扩展的基本流程。这一回介绍一下在扩展模块中的函数调用,包括在扩展函数的参数提取和关键字参数解析,以及在C语言中调用Python方法。 同样的本文中的示例代码可从 https://github.com/wusuopu/p......阅读全文

发表在 Python栏目 | 标签为 , | 留下评论

使用C语言编写Python扩展1——Hello World

能够使用C语言编写扩展是Python一大卖点吧,这可以将一些关键的代码使用C来写以提升程序的性能。本文是参考了Python的官方文档整理而来的,同时结合了Python2跟Python3。按照惯例现在先从一个Hello World开始讲解......阅读全文

发表在 Python栏目 | 标签为 , | 留下评论

mongoengine教程(5)——信号

MongoEngine在进行数据操作时会发出一些信号,我们可以连接这些信号进行一些额外的操作。注意:要在MongoEngine中使用信号,需要安装 blinker 这个库。 $ pip install blinker MongoEngine提供的信号如下: ......阅读全文

发表在 数据库 | 标签为 , | 留下评论

mongoengine教程(4)——文件存储

MongoDB的GridFS支持直接在数据库中存储文件。要在MongoEngine中使用GridFS,只要使用 FileField 对象即可。以下是一个例子: class Animal(Document): genus = StringField() family = StringField() ......阅读全文

发表在 数据库 | 标签为 , | 留下评论

mongoengine教程(3)——数据查询

与Django一样,Document类都有一个 objects 属性。它用于将类与数据库关联起来。objects属性是一个QuerySetManager类型的对象,它的操作会返回一个QuerySet类型的对象。可以通过对QuerySet对象的迭代获取数据库中......阅读全文

发表在 数据库 | 标签为 , | 留下评论

mongoengine教程(2)——文档模式

在MongoDB中一个文档(document)与关系型数据库中的一行(row)相似;文档保存在集合(collection)中,行保存在表(table)中。 定义文档的模式 与django类似,要定义一个文档模式只需要创建一个类继承自 Document,并添......阅读全文

发表在 数据库 | 标签为 , | 留下评论

mongoengine教程(1)——概述

MongoEngine是MongoDB的一个ODM(Object-Document Mapper)框架,它提供了类似Django的语法来操作MongoDB数据库。 安装 安装 MongoEngine 需要先安装 PyMongo。 使用pip安装 $ [sudo] pip install mongoengine 通......阅读全文

发表在 数据库 | 标签为 , | 留下评论