I\'d like to pull a table\'s field names from MySql into python, and I know that
\'show columns from project\'
will work. And I\'ve read that
You can query MySQL's information_schema
database directly for the fieldnames:
select distinct(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='posts';
SHOW COLUMNS FROM `table_name`
This MySQL query will work best, it will show all fields of a MySQL table.
If your goal is a comma-delimited list (Not very Python literate, but that's mostly what you'd want in PHP and Perl) GROUP_CONCAT is your friend:
SELECT GROUP_CONCAT(column_name) FROM information_schema.columns WHERE table_name='your-table-name-here' GROUP BY TABLE_NAME ORDER BY ORDINAL_POSITION
If you need them quoted this gives you all EXCEPT the outermost quotes:
SELECT GROUP_CONCAT(column_name SEPARATOR '","') FROM information_schema.columns WHERE table_name='your-table-name-here' GROUP BY TABLE_NAME ORDER BY ORDINAL_POSITION
SELECT column_name
FROM information_schema.columns
WHERE table_name = 'your_table'
AND table_schema = 'database_name'
Pipe the answer to awk:
SHOW columns FROM project; | awk '{ print $1 }'
Although it looks more elegant, you don't need awk for this. MySQL's information_schema.columns table has the info you need.
-- DESCRIBE THE HECK OUT OF THE ENTIRE 'table_name' table in the 'database_name' database
SHOW COLUMNS
FROM database_name.table_name ;
-- SHOW JUST THE COLUMN NAMES for 'table_name' table in the 'database_name' database.
SELECT column_name
FROM information_schema.columns
WHERE table_schema = 'database_name'
AND table_name = 'table_name' ;