Categor铆as
Etiquetas
Ansible apache ArgoCD autoalojado AWS Backup Bacula bind9 C cms compilaci贸n Compilaci贸n correo Cortafuegos Criptograf铆a Crossplane Debian debian django DNS docker forense git gnupg IaC iptables java journald kubernetes LDAP logs MariaDB mediawiki MongoDB MySQL NFS nftables nginx OpenStack OpenVPN Oracle php phpMyAdmin PLSQL Postgres PostgreSQL preseed python rocky snort tomcat Vagrant vagrant VPN vps WireGuard
258 palabras
1 minutos
Aplicacion web Oracle
Aplicaci贸n web Oracle programada en python.
Preparaci贸n
Antes de crear el fichero que va a ser la aplicaci贸n, vamos a crear un Entorno virtual (Venv) de python para contener ah铆 los m贸dulos que nos descarguemos
mkdir aplicacion_web_oracle && cd aplicacion_web_oracle
python3 -m venv /home/roberto/aplicacion_web_oracle
source bin/activate
Ahora vamos a descargar los m贸dulos necesarios:
pip install cx_oracle
pip install flask
Ahora, usando flask, se ha escrito la siguiente aplicaci贸n sencilla, que permite, al introducirle el nombre de un empleado en la direcci贸n /emp/
, mostrar los datos de dicho empleado. Es importante que, cuando se define pool se introduzcan los mismo datos que en el acceso remoto a oracle, ya que esta aplicaci贸n se ha creado desde una m谩quina distina a la de oracle.
import os
import sys
import cx_Oracle
from flask import Flask
def init_session(connection, requestedTag_ignored):
cursor = connection.cursor()
cursor.execute("""
ALTER SESSION SET
TIME_ZONE = 'UTC'
NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI'""")
# start_pool(): starts the connection pool
def start_pool():
pool_min = 4
pool_max = 4
pool_inc = 0
pool_gmd = cx_Oracle.SPOOL_ATTRVAL_WAIT
print("Connecting to", "192.168.122.105:1521/ORCLCDB")
pool = cx_Oracle.SessionPool(user="roberto",
password="roberto",
dsn="192.168.122.105:1521/ORCLCDB",
min=pool_min,
max=pool_max,
increment=pool_inc,
threaded=True,
getmode=pool_gmd,
sessionCallback=init_session)
return pool
app = Flask(__name__)
@app.route('/')
def index():
return "Entra en /emp/nombreempleado para ver los datos del empleado"
# Show the username for a given id
@app.route('/emp/<string:name>')
def show_username(name):
connection = pool.acquire()
cursor = connection.cursor()
cursor.execute("select * from emp where ename = (:name)", [name])
r = cursor.fetchone()
r = str(r)
return (r)
################################################################################
#
# Initialization is done once at startup time
#
if __name__ == '__main__':
# Start a pool of connections
pool = start_pool()
# Start a webserver
app.run(port=int(os.environ.get('PORT', '8080')))
Aplicacion web Oracle
https://www.robertops.com/posts/2022-10-31_practica1_abd/aplicacion_web_oracle/