English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
PostgreSQL se puede usar psycopg2El módulo psycopg se integra con Python. psycopg2Es un adaptador de base de datos PostgreSQL para el lenguaje de programación Python. psycopg2El propósito de la escritura es muy pequeño, rápido y estable como una roca. No necesita instalar este módulo por separado, ya que por defecto, se proporciona con Python2.5.x versión proporcionada.
Si no está instalado en su máquina, puede usar el comando yum para instalarlo de la siguiente manera
$yum install python-psycopg2
Para usar psycopg2El módulo psycopg, debe crear primero un objeto Connection que represente la base de datos, y luego puede optar por crear un objeto cursor, lo que ayudará a ejecutar todas las sentencias SQL.
A continuación, se presentan las APIs importantes de psycopg2 El módulo, que puede satisfacer sus necesidades de bases de datos PostgreSQL en programas Python. Si está buscando aplicaciones más complejas, puede ver Python psycopg2La documentación oficial del módulo.
N.º | API & Descripción |
---|---|
1 | psycopg2.connect(database="testdb", usuario="postgres", contraseña="cohondob", host="127.0.0.1", puerto="5432); Esta API abre una conexión a la base de datos PostgreSQL. Si la base de datos se abre con éxito, devolverá un objeto de conexión. |
2 | connection.cursor() Crear un cursor, que se utilizará durante el proceso de programación de bases de datos con Python. |
3 | cursor.execute(sql [, parámetros opcionales]) Ejecutar la sentencia SQL. La sentencia SQL puede ser parametrizada (es decir, utilizando marcadores de posición en lugar de texto SQL). psycopg2El módulo admite el uso de símbolos de reemplazo %s Por ejemplo: cursor.execute("insert into people values (%s, %s)", (who, age)) |
4 | cursor.executemany(sql, seq_of_parameters) Ejecutar el comando SQL para todas las secuencias de parámetros o mapeos encontrados en la secuencia SQL. |
5 | cursor.callproc(procname[, parameters]) Ejecutar el procedimiento almacenado de base de datos con nombre dado. La secuencia de parámetros debe contener una entrada para cada parámetro esperado por el procedimiento. |
6 | cursor.rowcount Atributo de solo lectura, que devuelve el último execute ejecutado*Número total de filas modificadas, insertadas o eliminadas. |
7 | connection.commit() Este método compromete la transacción actual. Si no llama a este método, cualquier operación realizada desde la última llamada a commit() no se verá en otras conexiones de base de datos. |
8 | connection.rollback() Devuelve cualquier cambio realizado en la base de datos desde la última llamada a commit(). |
9 | connection.close() Este método cierra la conexión de la base de datos. Note que esto no llama automáticamente a commit(). Si cierra la conexión de la base de datos sin llamar primero a commit(), se perderán sus cambios! |
10 | cursor.fetchone() Este método obtiene la siguiente fila del conjunto de resultados de la consulta, devuelve una secuencia única o None cuando no haya más datos disponibles. |
11 | cursor.fetchmany([size=cursor.arraysize]) Obtener el siguiente grupo de filas del resultado de la consulta y devolver una lista. Cuando no haya más filas disponibles, se devolverá una lista vacía. Este método intenta obtener tantas filas como sea posible indicadas por el parámetro size. |
12 | cursor.fetchall() Obtener todas las (restantes) filas del resultado de la consulta y devolver una lista. Cuando no haya más filas disponibles, se devolverá una lista vacía. |
El siguiente código de Python muestra cómo conectarse a una base de datos existente. Si la base de datos no existe, se creará y finalmente se devolverá un objeto de base de datos.
#!/usr/bin/python import psycopg2 conn = psycopg2.connect(database="testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432); print "Base de datos abierta con éxito"
Aquí, también puede proporcionar el nombre de la base de datos testdb, si la base de datos se abre con éxito, se mostrará el siguiente mensaje
Se abrió la base de datos con éxito
下面的Python程序将用于在先前创建的数据库-
#!/usr/bin/python import psycopg2 conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432); print "Base de datos abierta con éxito" cur = conn.cursor() cur.execute('CREATE TABLE COMPANY (ID INT PRIMARY KEY NOT NULL, NAME TEXT NOT NULL, AGE INT NOT NULL, ADDRESS CHAR(50), SALARY REAL);''') print "Table created successfully" conn.commit() conn.close()
当执行上述程序时,它会在test.db中创建COMPANY表,并显示以下消息
Base de datos abierta con éxito Table created successfully
下面的Python程序演示了如何在上面示例中创建的COMPANY表中创建记录
#!/usr/bin/python import psycopg2 conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432); print "Base de datos abierta con éxito" cur = conn.cursor() cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (1, 'Paul', 32, 'California', 20000.00 "); cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (2, 'Allen', 25, 'Texas', 15000.00 "); cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (3, 'Teddy', 23, 'Norway', 20000.00 "); cur.execute("INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY) \ VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 "); conn.commit() print "Records created successfully"; conn.close()
当上述程序执行时,将在COMPANY表中创建给定的记录,并显示以下两行
Base de datos abierta con éxito Records created successfully
下面的Python程序展示了如何从上面示例中创建的COMPANY表中获取和显示记录
#!/usr/bin/python import psycopg2 conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432); print "Base de datos abierta con éxito" cur = conn.cursor() cur.execute("SELECT id, name, address, salary FROM COMPANY") rows = cur.fetchall() for row in rows: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operación realizada con éxito"; conn.close()
Cuando se ejecuta el programa anterior, se producirá el siguiente resultado
Base de datos abierta con éxito ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operación realizada con éxito
下面的 Python 代码展示了如何使用 UPDATE 语句更新任何记录,然后从 COMPANY 表-获取并显示更新的记录
#!/usr/bin/python import psycopg2 conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432); print "Base de datos abierta con éxito" cur = conn.cursor() cur.execute("UPDATE COMPANY set SALARY = 25000.00 where ID = 1); conn.commit() print "Total number of rows updated:", cur.rowcount cur.execute("SELECT id, name, address, salary FROM COMPANY") rows = cur.fetchall() for row in rows: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operación realizada con éxito"; conn.close()
Cuando se ejecuta el programa anterior, se producirá el siguiente resultado
Base de datos abierta con éxito Total number of rows updated: 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 25000.0 ID = 2 NAME = Allen ADDRESS = Texas SALARY = 15000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operación realizada con éxito
El siguiente código de Python muestra cómo utilizar la sentencia DELETE para eliminar cualquier registro y luego obtener y mostrar los registros restantes de nuestra tabla COMPANY
#!/usr/bin/python import psycopg2 conn = psycopg2.connect(database = "testdb", user = "postgres", password = "pass123", host = "127.0.0.1", port = "5432); print "Base de datos abierta con éxito" cur = conn.cursor() cur.execute("DELETE FROM COMPANY WHERE ID=")2; conn.commit() print "Número total de filas eliminadas:", cur.rowcount cur.execute("SELECT id, name, address, salary FROM COMPANY") rows = cur.fetchall() for row in rows: print "ID = ", row[0] print "NAME = ", row[1] print "ADDRESS = ", row[2] print "SALARY = ", row[3], "\n" print "Operación realizada con éxito"; conn.close()
Cuando se ejecuta el programa anterior, se producirá el siguiente resultado
Base de datos abierta con éxito Número total de filas eliminadas: 1 ID = 1 NAME = Paul ADDRESS = California SALARY = 20000.0 ID = 3 NAME = Teddy ADDRESS = Norway SALARY = 20000.0 ID = 4 NAME = Mark ADDRESS = Rich-Mond SALARY = 65000.0 Operación realizada con éxito