cursor

class psycopg2.cursor

Объект курсор

Поддерживает интерфейс контекстного менеджера

with psycopg2.connection() as connection:
    with connection.cursor() as cursor:
        pass
cur.execute("SELECT * FROM test;")
for record in cur:
   print(record)

# (1, 100, "abc'def")
# (2, None, 'dada')
# (3, 42, 'bar')
arraysize
closed
connection

psycopg2.connection() ссылка на объект соединения с БД, к которому этот курсор относится

descriptions

psycopg2.extensions.Column() описание одного поля результата

itersize
lastrowid
name

Имя курсора, если он был задан во время создания

query

Строка последнего выполненого запроса

cursor.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar'))
cursor.query
# "INSERT INTO test (num, data) VALUES (42, E'bar')"
rowcount
rownumber
scrollable
statusmessage
cursor.execute("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar'))
cursor.statusmessage
# 'INSERT 0 1'
tzinfo_factory
withhold
callproc(procname, parameters)
cast(oid, s)

Преобразует значение из базы в питон объект

close()

Закрывает курсор

copy_expert(sql, file, size=8192)
cur.copy_expert("COPY test TO STDOUT WITH CSV HEADER", sys.stdout)
"""
id,num,data
1,100,abc'def
2,,dada
...
"""
copy_from(file, table, sep='t', null='\N', size=8192, colums=None)

Загружает данные из файлового объекта в таблицу

f = StringIO("42\tfoo\n74\tbar\n")
cur.copy_from(f, 'test', columns=('num', 'data'))
cur.execute("select * from test where id > 5;")
cur.fetchall()
# [(6, 42, 'foo'), (7, 74, 'bar')]
copy_to(file, table, sep='t', null='\N', columns=None)

Выгружает данные из таблицы в файловый объект

cursor.copy_to(sys.stdout, 'test', sep="|")
"""
1|100|abc'def
2|\N|dada
...
"""
execute(query, vars=None)

Выполняет указанный запрос

 cursor.execute(
     'SELECT * FROM airport WHERE city_code = %s',
     ('ALA', )
 )

 cursor.execute(
     'SELECT * FROM engine_airport WHERE city_code = %(city_code)s',
    {'city_code': 'ALA'}
)
    from psycopg2 import sql

    cur.execute(
        sql.SQL("insert into {} values (%s, %s)").format(sql.Identifier('my_table')),
        [10, 20]
    )

.. code-block:: py

    with conn.cursor() as cursor:
        columns = ('country_name', 'airport_name')
        stmt = (
            sql.SQL('SELECT {} FROM {} LIMIT 5')
                .format(
                    sql.SQL(',').join(map(sql.Identifier, columns)),
                    sql.Identifier('airport'))
        )
        cursor.execute(stmt)

        for row in cursor:
            print(row)

    ('Россия', 'Аэропорт')
    ...
executemany(query, vars=None)
fetchall()

Возвращает все оставшиеся записи

cursor.execute("SELECT * FROM test;")
cursor.fetchall()
# [(1, 100, "abc'def"), (2, None, 'dada'), (3, 42, 'bar')]
fetchmany(size=cursor.size)

Возвращает указанное количесвто записей, по умолчанию - все

cur.execute("SELECT * FROM test;")

cur.fetchmany(2)
# [(1, 100, "abc'def"), (2, None, 'dada')]

cur.fetchmany(2)
# [(3, 42, 'bar')]

cur.fetchmany(2)
# []
fetchone()

Возвращает одну запись

cursor.execute("SELECT * FROM test WHERE id = %s", (3,))
cursor.fetchone()
# (3, 42, 'bar')
mogrify(operation, params)
cursor.mogrify("INSERT INTO test (num, data) VALUES (%s, %s)", (42, 'bar'))
# "INSERT INTO test (num, data) VALUES (42, E'bar')"
scroll(value, mode='relative')

Переместить курсор на указанную позицию

setinputsizes(sizes)
setoutputsizes(sizes, column)