Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- # -*- coding: utf-8 -*-
- """
- PARA Bases de datos RELACIONALES
- Python tiene una API general llamada API-DB
- MySQL: mysql-connector-python, PyMySQL, MySQLdb
- PostgreSQL: psycopg, pg8000
- Sqlite: sqlite3 (incluido en la librería)
- SQL Server: pymssql pyodbc
- Oracle: cx_Oracle
- import sqlite3
- # Creo una conexión con una base de datos. Si la base de datos no existe
- # la crea sin SQL
- conn = sqlite3.connect("mibase.sqlite")
- # Para crear una tabla, agregar datos, etc necesito hacer una consulta SQL
- # para hacer una consulta necesito crear un cursor
- cursor = conn.cursor()
- # Creo una tabla personas
- cursor.execute("CREATE TABLE IF NOT EXISTS personas(nombre TEXT, edad NUMERIC)")
- # Como modifique la estructura de la db, hay que guardar los cambios
- # o hacer un commit
- conn.commit()
- # agrego datos
- personas = (
- ("Juan",25),
- ("Ana",15),
- ("Luis",58)
- )
- for nombre,edad in personas:
- cursor.execute("INSERT INTO personas VALUES (?,?)",(nombre,edad))
- conn.commit()
- # consulto los datos que tengo
- cursor.execute("SELECT * FROM personas")
- datos = cursor.fetchall() # fetchone() vuelca un solo dato
- print(datos)
- # cierro la base de datos
- conn.close()
- # para mysql
- # instalo la biblioteca
- # python -m pip install pymysql
- import pymysql
- # Creo una conexión con una base de datos. Si la base de datos no existe
- # la crea sin SQL
- conn = pymysql.connect(
- host = "localhost", # port por defecto 3306?
- user = "usuario",
- passwd = "contraseña",
- db = "mibase.sqlite")
- # Para crear una tabla, agregar datos, etc necesito hacer una consulta SQL
- # para hacer una consulta necesito crear un cursor
- cursor = conn.cursor()
- # Creo una tabla personas
- cursor.execute("CREATE TABLE IF NOT EXISTS personas(nombre VARCHAR(30), edad INT)")
- # Como modifique la estructura de la db, hay que guardar los cambios
- # o hacer un commit
- conn.commit()
- # agrego datos
- personas = (
- ("Juan",25),
- ("Ana",15),
- ("Luis",58)
- )
- for nombre,edad in personas:
- cursor.execute("INSERT INTO personas VALUES (%s,%s)",(nombre,edad))
- conn.commit()
- # consulto los datos que tengo
- cursor.execute("SELECT * FROM personas")
- datos = cursor.fetchall() # fetchone() vuelca un solo dato
- print(datos)
- # cierro la base de datos
- conn.close()
- """
- # Ejemplo de SQL Injention
- import sqlite3
- conn = sqlite3.connect("mibase.sqlite")
- cursor = conn.cursor()
- nombre = input("Nombre: ")
- edad = int(input("Edad: "))
- cursor.execute("INSERT INTO personas VALUES (?,?)",(nombre, edad))
- conn.commit()
- print("Datos guardados")
- conn.close()
- # datos para SQL Injection
- # nombre: Ale',22); DELETE FROM personas; --
- # edad: 41
- # cursor.executescript(f"INSERT INTO personas VALUES ('{nombre}', {edad})")
- # produce la inyección
- # INSERT INTO personas VALUES ('Ale',22); DELETE FROM personas; --', 41)"
Advertisement
Add Comment
Please, Sign In to add comment