SELECT * FROM a, b WHERE ...
Mysql permite nombres de columna duplicados en los resultados de una consulta. Por lo tanto, en el terminal, ninguno de los nombres de columna tiene el prefijo usando la consulta anterior.forzar mysqldb dict cursor para devolver prefijo todos los nombres de columna con el nombre de tabla
Sin embargo, estoy usando mysqldb en python con el DictCursor. Los resultados son una lista de diccionarios donde los nombres de las columnas son las claves. Algunas veces, el cursor dict automáticamente prefija el nombre de la columna con el nombre de la tabla. Por lo que puedo decir, hace esto para el segundo de dos nombres de columna ambiguos, pero solo si el segundo valor es único. De todos modos, me gustaría forzar al cursor a prefijar TODAS las teclas con el nombre de la tabla.
Desde el mysqldb docs en la función fetch.row() ...
El segundo parámetro (cómo) dice que la forma en la fila deben estar representados. De forma predeterminada, es cero lo que significa, devolver como una tupla. cómo = 1 significa, devolverlo como un diccionario, donde las claves son los nombres de las columnas, o table.column si hay dos columnas con el mismo nombre (por ejemplo, de un join). how = 2 significa lo mismo que how = 1 excepto que las claves son siempre table.column; esto es por compatibilidad con el antiguo módulo Mysqldb.
Por lo tanto, parece factible, pero no estoy usando directamente la función fetch.row() ... así que la pregunta es, ¿cómo puedo que el cursor MySQLdb dict a utilizar siempre la forma = 2 cuando ¿trae filas?
I don' Conozco Python, pero si ejecuta la consulta en una consola, ¿todavía obtiene el prefijo de la tabla para las columnas ambiguas? – Karolis
@Karolis esa es la pregunta correcta, gracias ... para empezar, parece que mysql permite duplicar los nombres de las columnas, por lo que se trata de una cuestión en parte confidencial. – jmilloy