python
  • mysql
  • sql
  • mysql-python
  • 2017-11-14 3 views -1 likes 
    -1

    select *를 사용하여 쿼리에서 잘 작동하지만 열 이름도 쿼리하려고 할 때 작동하지 않습니다 (아마도 "FROM"이라는 열이 있기 때문에 그럴 수 있습니다). ?) 여기Python 2.7을 사용하여 mysqldb에서 열 이름을 얻는 방법은 무엇입니까?

    내 코드 :

    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'") 
    

    편집 : SHOW TABLE 테스트를 만들;

    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 열"

    또는이를 사용할 수 있습니다 :

    | 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 | 
    
    +0

    사용'backtick' \'주변 'select' 문에 열 이름을 입력 한 다음 –

    +0

    을 실행하십시오. 오류 메시지는 요청하는 것과 별개로 문제가 있음을 나타냅니다. 티. 이 TEST 테이블은 어떻게 생겼을까요? 'SHOW CREATE TABLE TEST \ G' – Wodin

    +0

    이것으로 코드를 업데이트했습니다! – Harley

    답변

    1

    이 시도

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

    나는 그것을 시험해 보았다. 그리고 나는 같은 오류 메시지를 받는다! – Harley

    +0

    당신도 이것으로 시도해 봤습니까? "coloumn 값 이름을 대소 문자를 구분하여 다시 확인하십시오. – Alex

    +0

    코드로 시도했지만 오류 메시지가 동일합니다. 그 정확한지 확인하십시오 – Harley

    관련 문제