¿Cómo encontrar tablas que contienen una columna específica en SQL usando Python?

MySQL que está basado en la web,

En este artículo, obtendremos las tablas que tienen una columna específica independientemente de la base de datos. Primero, vamos a conectarnos a un servidor. La consulta SQL que se va a utilizar es:

 select tab.table_schema as database_name,tab.table_name 
 from information_schema.tables as tab 
 inner join information_schema.columns as col
 on col.table_schema = tab.table_schema 
 and col.table_name = tab.table_name 
 and column_name = 'Specified_Column_Name' 
 where tab.table_type = 'BASE TABLE' 
 order by tab.table_schema, tab.table_name;


A continuación se muestran algunos programas que muestran cómo obtener las tablas de MySQL que tienen una columna en particular:

Ejemplo 1

A continuación se muestra la descripción de la tabla de todas las tablas, la base de datos de muestra tiene las siguientes tablas a las que se accederá mediante un script de Python:

A continuación se muestra el programa para obtener los detalles de las tablas MySQL que tienen una columna en particular:   

Python3

# Module Imports
import mysql.connector as mariadb
import sys
  
  
# Connect to MariaDB Platform
try:
    conn = mariadb.connect(
        user="root",
        password="",
        database="gfg"
    )
  
except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)
  
  
# Get cursor object
cur = conn.cursor()
  
  
# Get the table and database details having a particular column
cur.execute("select tab.table_schema as database_name,tab.table_name \
             from information_schema.tables as tab \
             inner join information_schema.columns as col \
             on col.table_schema = tab.table_schema \
             and col.table_name = tab.table_name \
             and column_name = 'Worker_ID' \
             where tab.table_type = 'BASE TABLE' \
             order by tab.table_schema, tab.table_name;")
  
  
# Display the tables
for(database_name, tab) in cur:
    print(f"Table Name: {tab}Database Name: {database_name}")

Producción:

Ejemplo 2

Aquí hay otro ejemplo para obtener detalles de la tabla independientemente de que la base de datos tenga una columna en particular, a continuación se muestra la descripción de todas las tablas:

A continuación se muestra la secuencia de comandos de python para obtener detalles de la tabla que tienen nombres de columna particulares :

Python3

# Module Imports
import mysql.connector as mariadb
import sys
  
  
# Connect to MariaDB Platform
try:
    conn = mariadb.connect(
        user="root",
        password="",
        database="gfg"
    )
  
except mariadb.Error as e:
    print(f"Error connecting to MariaDB Platform: {e}")
    sys.exit(1)
  
  
# Get cursor object
cur = conn.cursor()
  
  
# Get the table and database details having a particular column
cur.execute("select tab.table_schema as database_name,tab.table_name \
             from information_schema.tables as tab \
             inner join information_schema.columns as col \
             on col.table_schema = tab.table_schema \
             and col.table_name = tab.table_name \
             and column_name = 'Names' \
             where tab.table_type = 'BASE TABLE' \
             order by tab.table_schema, tab.table_name;")
  
  
# Display the tables
for(database_name, tab) in cur:
    print(f"\n\nTable Name: {tab}\nDatabase Name: {database_name}")

Producción:

Publicación traducida automáticamente

Artículo escrito por deepthimgs y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *