es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Al analizar dos declaraciones SQL utilizando la función “split”, el resultado obtenido es incorrecto.

“`import sqlparse
t_sql = """create table dmc_o2_test(
stuid number(38) primary key,
stuname varchar2(30) not null
)
select * from dmc_o2_test;"""

statements = sqlparse.parse(t_sql)
for statement in statements:
print(statement)
“`

Output:

create table dmc_o2_test (
stuid number (38) primary key,
stuname varchar2 (30) not null
)
select * from dmc_o2_test;

La variable t_sql contiene dos declaraciones SQL, y la primera no tiene punto y coma al final. Pero el resultado se considera como una sola declaración.

¿Cómo puedo solucionar este problema de la declaración SQL sin punto y coma? ¿Algún buen consejo?
¡GRACIAS!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para solucionar este problema, se puede usar la función sqlparse.parse() en lugar de sqlparse.split().

    sqlparse.parse() analiza el código SQL de entrada completo, devolviendo una lista de declaraciones analizadas, mientras que sqlparse.split() divide la entrada en declaraciones SQL individuales en función de los puntos y comas.

    Aquí hay un ejemplo de cómo usar sqlparse.parse():

    import sqlparse
    
    t_sql = """create table dmc_o2_test(
        stuid number(38) primary key,
        stuname varchar2(30) not null
    )
    
    select * from dmc_o2_test"""
    
    parsed = sqlparse.parse(t_sql)
    print(len(parsed))  # Salida: 2
    

    En este ejemplo, sqlparse.parse() identifica correctamente que t_sql contiene dos declaraciones SQL, y devuelve una lista de dos declaraciones analizadas. Tenga en cuenta que también agregué un salto de línea entre las dos declaraciones SQL para una mejor legibilidad.

Comments are closed.