teslariu

base de datos

May 19th, 2023
1,323
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.87 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. """
  4. PARA Bases de datos RELACIONALES
  5. Python tiene una API general llamada API-DB
  6. MySQL: mysql-connector-python, PyMySQL, MySQLdb
  7. PostgreSQL: psycopg, pg8000
  8. Sqlite: sqlite3 (incluido en la librería)
  9. SQL Server: pymssql pyodbc
  10. Oracle: cx_Oracle
  11.  
  12.  
  13. import sqlite3
  14.  
  15. # Creo una conexión con una base de datos. Si la base de datos no existe
  16. # la crea sin SQL
  17. conn = sqlite3.connect("mibase.sqlite")
  18.  
  19. # Para crear una tabla, agregar datos, etc necesito hacer una consulta SQL
  20. # para hacer una consulta necesito crear un cursor
  21. cursor = conn.cursor()
  22.  
  23. # Creo una tabla personas
  24. cursor.execute("CREATE TABLE IF NOT EXISTS personas(nombre TEXT, edad NUMERIC)")
  25.  
  26. # Como modifique la estructura de la db, hay que guardar los cambios
  27. # o hacer un commit
  28. conn.commit()
  29.  
  30. # agrego datos
  31. personas = (
  32.    ("Juan",25),
  33.    ("Ana",15),
  34.    ("Luis",58)
  35. )
  36.  
  37. for nombre,edad in personas:
  38.    cursor.execute("INSERT INTO personas VALUES (?,?)",(nombre,edad))
  39.    
  40. conn.commit()
  41.    
  42. # consulto los datos que tengo
  43. cursor.execute("SELECT * FROM personas")
  44. datos = cursor.fetchall() # fetchone() vuelca un solo dato
  45. print(datos)
  46.  
  47. # cierro la base de datos
  48. conn.close()
  49.  
  50. # para mysql
  51. # instalo la biblioteca
  52. # python -m pip install pymysql
  53. import pymysql
  54.  
  55. # Creo una conexión con una base de datos. Si la base de datos no existe
  56. # la crea sin SQL
  57. conn = pymysql.connect(
  58.    host = "localhost", # port por defecto 3306?
  59.    user = "usuario",
  60.    passwd = "contraseña",
  61.    db = "mibase.sqlite")
  62.  
  63. # Para crear una tabla, agregar datos, etc necesito hacer una consulta SQL
  64. # para hacer una consulta necesito crear un cursor
  65. cursor = conn.cursor()
  66.  
  67. # Creo una tabla personas
  68. cursor.execute("CREATE TABLE IF NOT EXISTS personas(nombre VARCHAR(30), edad INT)")
  69.  
  70. # Como modifique la estructura de la db, hay que guardar los cambios
  71. # o hacer un commit
  72. conn.commit()
  73.  
  74. # agrego datos
  75. personas = (
  76.    ("Juan",25),
  77.    ("Ana",15),
  78.    ("Luis",58)
  79. )
  80.  
  81. for nombre,edad in personas:
  82.    cursor.execute("INSERT INTO personas VALUES (%s,%s)",(nombre,edad))
  83.    
  84. conn.commit()
  85.    
  86. # consulto los datos que tengo
  87. cursor.execute("SELECT * FROM personas")
  88. datos = cursor.fetchall() # fetchone() vuelca un solo dato
  89. print(datos)
  90.  
  91. # cierro la base de datos
  92. conn.close()
  93. """  
  94.    
  95. # Ejemplo de SQL Injention
  96. import sqlite3
  97.  
  98. conn = sqlite3.connect("mibase.sqlite")
  99.  
  100. cursor = conn.cursor()
  101.  
  102. nombre = input("Nombre: ")
  103. edad = int(input("Edad: "))
  104.  
  105. cursor.execute("INSERT INTO personas VALUES (?,?)",(nombre, edad))
  106.  
  107. conn.commit()
  108.  
  109. print("Datos guardados")
  110. conn.close()
  111.  
  112. # datos para SQL Injection
  113. # nombre: Ale',22); DELETE FROM personas; --
  114. # edad: 41
  115. # cursor.executescript(f"INSERT INTO personas VALUES ('{nombre}', {edad})")
  116. # produce la inyección
  117. # INSERT INTO personas VALUES ('Ale',22); DELETE FROM personas; --', 41)"
Advertisement
Add Comment
Please, Sign In to add comment