如何使用 Python 2.7 获取 mysqldb 中的列名?

How to get columns name in mysqldb with a Python 2.7?

如果我从查询中使用 select * 它运行良好,但是当我也尝试查询列名时,它不起作用(可能是因为我有一个名为 [=22= 的列] 但这就是我使用 'FROM!?)

的原因

这是我的代码:

connection = MySQLdb.connect(host='localhost',
    user='admin',
    passwd='',
    db='database1',
    use_unicode=True,
    charset="utf8")
cursor = connection.cursor()
query = """ select ACTUAL_TIME, 'FROM, ID
    union all
    select ACTUAL_TIME,  FROM , ID
    from TEST
        into outfile '/tmp/test.csv'
        fields terminated by ';'
        enclosed by '"'
        lines terminated by '\n';
        """

cursor.execute(query)
connection.commit()
cursor.close()

我收到此错误消息:

raise errorvalue
_mysql_exceptions.OperationalError: (1054, "Unknown column 'ACTUAL_TIME' in 'field list'")

编辑:显示创建 TABLE 测试;

| TEST | CREATE TABLE `TEST` (
  `ACTUAL_TIME` varchar(100) DEFAULT NULL,
  `FROM` varchar(100) DEFAULT NULL,
  `STATUS` varchar(100) DEFAULT NULL,
  `ID` int(10) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=76287 DEFAULT CHARSET=utf8 |

试试这个:

connection = MySQLdb.connect(host='localhost',
    user='admin',
    passwd='',
    db='database1',
    use_unicode=True,
    charset="utf8")
cursor = connection.cursor()
query = """ select 'ACTUAL_TIME', 'FROM', 'ID' -- add single quotes
    union all
    select `ACTUAL_TIME`, `FROM`, `ID`  -- add here backtick in column names
    from TEST
        into outfile '/tmp/test.csv'
        fields terminated by ';'
        enclosed by '"'
        lines terminated by '\n';
        """

cursor.execute(query)
connection.commit()
cursor.close()

否则您可以使用它来获取列名 "SHOW columns"

或:

cursor.execute("SELECT * FROM table_name LIMIT 0")
print cursor.description

列 = cursor.description

result = [{columns[index][0]:column for index, column in enumerate(value)} for value in cursor.fetchall()]

打印(结果)