2017-11-14 1 views
-1

Wenn ich Select * aus Abfrage verwenden, funktioniert es gut, aber wenn ich versuche, den Spaltennamen auch abzufragen, funktioniert es nicht (vielleicht weil ich eine Spalte mit dem Namen "FROM" habe), deshalb habe ich 'FROM! ?)Wie bekomme ich Spaltennamen in mysqldb mit einem Python 2.7?

Hier mein Code:

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() 

ich diese Fehlermeldung:

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

EDIT: SHOW CREATE TABLE test;

| 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

Verwendung 'backtick' \' um Spaltennamen in'Auswählen'-Anweisungen und dann Ausführen –

+0

Die Fehlermeldung bedeutet, dass es ein Problem gibt, das von dem getrennt ist, um das Sie gebeten werden t. Wie sieht diese 'TEST' Tabelle aus? 'SHOW CREATE TABLE TEST \ G' – Wodin

+0

Ich habe meinen Code damit aktualisiert! – Harley

Antwort

1

versuchen Sie dies:

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() 

oder sonst können Sie diese Spaltennamen "SHOW Spalten"

oder benutzen Sie:

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

Ich habe es versucht, und ich bekomme die gleiche Fehlermeldung! – Harley

+0

Sie verwenden '' 'als beigefügt haben Sie mit diesem auch versucht? Überprüfen Sie die Column-Wert Namen erneut im Falle der Groß- und Kleinschreibung. – Alex

+0

Ich habe versucht mit Ihrem Code, aber die Fehlermeldung ist die gleiche.Ich überprüfte die Spalten benennt es – Harley