2

Используя метод описанный в question 972, я не смог обезьяне патчить метод курсор() в Psycopg:обезьяны расширение латание C в Python

Пробовал пропатчить Methond в psycopg2 с типами, но он не работает :

>>> import psycopg2, types 
import psycopg2, types 
>>> db = psycopg2.connect('dbname=foo') 
db = psycopg2.connect('dbname=foo') 
>>> def mycursor(self): 
def mycursor(self): 
...  db.rollback() 
    db.rollback() 
...  return self.cursor() 
    return self.cursor() 
... 

>>> db.mycursor = types.MethodType(mycursor, db) 
db.mycursor = types.MethodType(mycursor, db) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
AttributeError: 'psycopg2._psycopg.connection' object has no attribute 'mycursor' 
>>> 

Это потому, что это расширение C?

ответ

3

Исправить. Типы, определенные в C, не могут содержать произвольные атрибуты.