在python中从表的数据集中获取列名

Abx*_*Abx 2 python cassandra python-2.7

我正在尝试从表中获取列

 query = session.prepare("""  SELECT * FROM mytable   """)

 row_data = session.execute(query, )
Run Code Online (Sandbox Code Playgroud)

我想要的是从row_data获取列名。有没有办法做到这一点?。

gar*_*rtb 5

在大多数python数据库适配器中,您可以使用a DictCursor通过类似于Python词典的接口而不是元组来检索记录。

使用cassandra

>>> from cassandra.query import dict_factory
>>> session = cluster.connect('mykeyspace')
>>> session.row_factory = dict_factory
>>> rows = session.execute("SELECT name, age FROM users LIMIT 1")
>>> print rows[0]
{u'age': 42, u'name': u'Bob'}
Run Code Online (Sandbox Code Playgroud)

使用psycopg2

>>> dict_cur = conn.cursor(cursor_factory=psycopg2.extras.DictCursor)
>>> dict_cur.execute("INSERT INTO test (num, data) VALUES(%s, %s)",
...                  (100, "abc'def"))
>>> dict_cur.execute("SELECT * FROM test")
>>> rec = dict_cur.fetchone()
>>> rec['id']
1
>>> rec['num']
100
>>> rec['data']
"abc'def"
Run Code Online (Sandbox Code Playgroud)

使用MySQLdb

>>> import MySQLdb 
>>> import MySQLdb.cursors 
>>> myDb = MySQLdb.connect(user='andy47', passwd='password', db='db_name', cursorclass=MySQLdb.cursors.DictCursor) 
>>> myCurs = myDb.cursor() 
>>> myCurs.execute("SELECT columna, columnb FROM tablea") 
>>> firstRow = myCurs.fetchone() 
{'columna':'first value', 'columnb':'second value'}
Run Code Online (Sandbox Code Playgroud)