テーブルの列名を取得したいのですが、100万を超えるデータが含まれています。だから私は使用できません:
cursor.execute("SELECT * FROM table_name")
print cursor.description
そしてsqlite3では、私はそれをこのようにします
crs.execute("PRAGMA table_info(%s)" %(tablename[0]))
for info in crs:
print info
しかし、これはpython mysqldbでは機能しません。誰かがそれを行う方法を知っていますか?
cursor.execute("SHOW columns FROM table_name")
print [column[0] for column in cursor.fetchall()]
参考までに、これは基本的に desc
を使用するのと同じです。
cursor.execute("desc table_name")
print [column[0] for column in cursor.fetchall()]
これを行う正しい方法は、"SHOW columns FROM table_name"
を使用することですが、既存のクエリにLIMIT
を追加することもできます。
cursor.execute("SELECT * FROM table_name LIMIT 0")
print cursor.description
試してみてください
cursor.execute("SELECT * FROM table_name LIMIT 1")
または
cursor.execute("SELECT * FROM table_name WHERE 1=0")
どちらも、大量のデータがガタガタ鳴るのを防ぎます。 2つ目はおそらくもっとエレガントです。確認したところ、これでも機能します。
>>>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),)
cursor.execute("SELECT * FROM table_name LIMIT 0")
cursor.column_names
その他の情報を見つけるには、以下を使用してください
[v for v in dir(cursor) if v.find("_")]