conexion con python e insertar
DATABASE.INI
--------------------------------------------
[postgresql] host=localhost database=suppliers user=postgres password=990111
CONFIG.PY
-------------------------------------------
#coding: utf-8
from configparser import ConfigParser
def config(filename='database.ini', section='postgresql'):
# crear un parser.
parser = ConfigParser()
# leer el archivo de configuración
parser.read(filename)
# obtener la section, por defecto es postgresql.
db = {}
if parser.has_section(section):
params = parser.items(section)
for param in params:
db[param[0]] = param[1]
else:
raise Exception('Section {0} not found in the {1} file.'.format(section,filename))
return db
CONNECT.PY
-------------------------------------------
# coding: utf-8
import psycopg2
from config import config
def connect():
"""
Conecta con la base de datos del servidor.
"""
conn = None
try:
# lee los parámetros de la conexión.
params = config()
# conecta con el server de PostgreSQL.
print("Conectando con la base de datos de PostgreSQL")
conn = psycopg2.connect(**params)
# crear un cursor.
cur = conn.cursor()
# ejecuta una declaración.
print("versión de la base de datos de PostgreSQL: ")
cur.execute("SELECT version()")
# muestra la versión del servidor de base de datos PostgreSQL.
db_version = cur.fetchone()
print(db_version)
# cierra la comunicación con PostgreSQL
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is None:
conn.close()
print('Database connection closed.')
if __name__ == '__main__':
connect()

CREAR TABLAS
-------------------------------------------
import psycopg2
from config import config
def create_tables():
""" crear tablas en la base de datos PostgreSQL"""
commands = (
"""
CREATE TABLE vendors (
vendor_id SERIAL PRIMARY KEY,
vendor_name VARCHAR(255) NOT NULL
)
""",
""" CREATE TABLE parts (
part_id SERIAL PRIMARY KEY,
part_name VARCHAR(255) NOT NULL
)
""",
"""
CREATE TABLE part_drawings (
part_id INTEGER PRIMARY KEY,
file_extension VARCHAR(5) NOT NULL,
drawing_data BYTEA NOT NULL,
FOREIGN KEY (part_id)
REFERENCES parts (part_id)
ON UPDATE CASCADE ON DELETE CASCADE
)
""",
"""
CREATE TABLE vendor_parts (
vendor_id INTEGER NOT NULL,
part_id INTEGER NOT NULL,
PRIMARY KEY (vendor_id , part_id),
FOREIGN KEY (vendor_id)
REFERENCES vendors (vendor_id)
ON UPDATE CASCADE ON DELETE CASCADE,
FOREIGN KEY (part_id)
REFERENCES parts (part_id)
ON UPDATE CASCADE ON DELETE CASCADE
)
""")
conn = None
try:
params = config()
# Conecta con el servidor.
conn = psycopg2.connect(**params)
cur = conn.cursor()
# Crea una tabla uno a uno
for command in commands:
cur.execute(command)
cur.close()
# hace commit a los cambios.
conn.commit()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
if __name__ == '__main__':
create_tables()

INSERTAR
-------------------------------------------
# coding: utf-8
# Para esta demostración, usaremos la tabla 'vendors' en la tabla 'suppliers'.
# -----------------
# | Vendors |
# -----------------
# | * vendor_id |
# | vendor_name |
# -----------------
#
# El método siguiente inserta una nueva fila en la tabla 'vendors' y retorna el nuevo valor generado de 'vendor_id'.
import psycopg2
from config import config # Este es el archivo que se creó primero en la presentación de powerpoint.
def insert_vendor(vendor_name):
# Inserta un nuevo vendedor en la tabla 'vendors'.
sql = """INSERT INTO vendors(vendor_name)
VALUES(%s) RETURNING vendor_id;"""
conn = None
vendor_id = None
try:
# Lee la configuración de la base de datos.
params = config()
# Conecta con la base de datos de postgres.
conn = psycopg2.connect(**params)
# Crea un nuevo cursor.
cur = conn.cursor()
# Ejecuta el comando INSERT.
cur.execute(sql, (vendor_name,))
# Devuelve el id generado.
vendor_id = cur.fetchone()[0]
# Hace un commit a los cambios en la base de datos.
conn.commit()
# Cierra la comunicación con la base de datos.
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
print(vendor_id)
# El siguiente método ingresa multiples líneas en una tabla.
# Es similar a insertar una nueva linea, con la excepción de que en lugar de llamar al método
# execute(), llamamos a executemany().
def insert_vendor_list(vendor_list):
sql = "INSERT INTO vendors(vendor_name) VALUES(%s)"
conn = None
try:
# Lee la configuración de la base de datos
params = config()
# Connecta con la base de datos de PostgreSQL.
conn = psycopg2.connect(**params)
# Crea un nuevo cursor.
cur = conn.cursor()
# Ejecuta el comando INSERT.
# con executemany()
cur.executemany(sql, vendor_list)
# Hace un commit a los cambios a la base de datos.
conn.commit()
# Cierra la comunicación con la base de datos.
cur.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
if conn is not None:
conn.close()
# Ejecución.
if __name__ == '__main__':
# Inserta un vendedor.
insert_vendor("3M Co.")
# Inserta multiples vendedores.
insert_vendor_list([
('AKM Semiconductor Inc.',),
('Asahi Glass Co Ltd.',),
('Daikin Industries Ltd.',),
('Dynacast International Inc.',),
('Foster Electric Co. Ltd.',),
('Murata Manufacturing Co. Ltd.',)
])

-------------------------------------------
Comentarios
Publicar un comentario