如何使用Python 2.7在mysqldb中获取列名称?
如果我使用select*from查询,它工作得很好,但是当我尝试查询列名时,它也不工作(可能是因为我有一个名为“from”的列,但这就是为什么我使用“from!”) 这是我的代码:如何使用Python 2.7在mysqldb中获取列名称?,python,mysql,sql,mysql-python,Python,Mysql,Sql,Mysql Python,如果我使用select*from查询,它工作得很好,但是当我尝试查询列名时,它也不工作(可能是因为我有一个名为“from”的列,但这就是为什么我使用“from!”) 这是我的代码: connection = MySQLdb.connect(host='localhost', user='admin', passwd='', db='database1', use_unicode=True, charset="utf8") cursor = connecti
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'")
编辑:显示创建表测试
| 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()
或者,您可以使用它获取列名“ShowColumns”
或:
columns=cursor.description 结果=[{columns[index][0]:索引的列,枚举(值)中的列}游标中的值。fetchall()]
打印(结果)在
选择
语句中的列名周围使用倒勾
`然后执行错误消息表示存在与您询问的问题不同的问题。这个测试表是什么样子的<代码>显示创建表测试\G
我用这个更新了我的代码!您使用的是由括起来的“”,您也尝试过吗?请再次检查冒号值名称,以区分大小写。我尝试过使用您的代码,但错误消息是相同的。我检查了列名称,确保其正确无误。在我的游标之后。执行(查询)部分?为游标中的列打印[columns[0]。fetchall()NameError:名称“columns”不正确defined@Rebecca21我的意思是query=“”选择“实际时间”、“发件人”、“ID”联合所有人都选择“实际时间”、“发件人”、“ID”…
你介意为不太有经验的问题添加一些解释吗?
cursor.execute("SELECT * FROM table_name LIMIT 0")
print cursor.description