python: MYSQLdb. how to get columns name without executing select * in a big table?

后端 未结 4 1130
醉梦人生
醉梦人生 2020-12-31 09:01

I want to get the column names of a table, but there a over million data in it. So I cannot use:

cursor.execute(\"SELECT * FROM table_name\")
print cursor.de         


        
相关标签:
4条回答
  • 2020-12-31 09:33

    You can use SHOW columns:

    cursor.execute("SHOW columns FROM table_name")
    print [column[0] for column in cursor.fetchall()]
    

    FYI, this is essentially the same as using desc:

    cursor.execute("desc table_name")
    print [column[0] for column in cursor.fetchall()]
    
    0 讨论(0)
  • 2020-12-31 09:41

    Try

    cursor.execute("SELECT * FROM table_name LIMIT 1")
    

    or

    cursor.execute("SELECT * FROM table_name WHERE 1=0")
    

    Both prevent massive amounts of data being rattled. The second one is perhaps more elegant. I've just checked, and even this works:

    >>>cursor.execute("SELECT LEFT(long_text,5) as short_text FROM table_name WHERE 1=0")
    >>>print cursor.description
    (('short_text', 253, 0, 5, 5, 31, 0),)
    
    0 讨论(0)
  • 2020-12-31 09:43
    cursor.execute("SELECT * FROM table_name LIMIT 0")
    cursor.column_names
    

    Use the following to find other information

    [v for v in dir(cursor) if v.find("_")]
    
    0 讨论(0)
  • 2020-12-31 09:46

    The correct way to do this would be to use "SHOW columns FROM table_name" however, you could also simply add a LIMIT to your existing query:

    cursor.execute("SELECT * FROM table_name LIMIT 0")
    print cursor.description
    
    0 讨论(0)
提交回复
热议问题