2017-07-09 2 views
0

Ich habe bereits einige Antworten zu diesem Thema gelesen. Aber alle geben mir den gleichen Fehler.Wie erhält man den Spaltennamen aus einer Tabelle in der SQLite3-Datenbank mit Python3?

Hier sind die Lösungen, die ich lesen:

  1. Link 1
  2. Link 2

    import sqlite3 as sql 
    
    #connect to database 
    connection = sql.connect("database.db") 
    
    #make a cursor which will move in the database 
    cursor = connection.cursor() 
    
    #execute the different command 
    def execute(cursor, command): 
        return cursor.execute(command) 
    
    #print the result 
    def print_result(result): 
        for var in result: 
         print(var) 
    # select columns' name from table 
    
    command = """select distinct emplyee from emplyee.information_schema.columns""" 
    
    result = execute(cursor, command) 
    print_result(result) 
    

Der Tabellenname ist emplyee.

Fehler ist: Traceback (jüngste Aufforderung zuletzt):

File "database.py", Zeile 47, in

result = execute(cursor, command) 

File "database.py", Zeile 11, in

return cursor.execute(command) 

sqlite3.OperationalError ausführen: "" in der Nähe von: syntax error

+0

Welche Datenbank verwenden Sie? Sie haben MySQL und SQL Server getaggt, aber der Code zeigt SQLite an. –

+0

Ich verwende SQLITE3, aber ich wusste nicht, dass sie unterschiedlich sind. Ich dachte, dass grundlegende Befehle identisch sein müssen –

Antwort

1

SQLite unterstützt nicht die information_schema, so brauchen Sie so etwas wie dies zu tun:

def table_columns(db, table_name) 
    curs = db.cursor() 
    sql = "select * from %s where 1=0;" % table_name 
    curs.execute(sql) 
    return [d[0] for d in curs.description] 
+0

Es hat funktioniert. Aber kannst du mir sagen, was 1 = 0 hier macht. –

+0

@AdarshMaurya verhindert, dass die Abfrage Daten zurückgibt. – Shadow

+0

Der Ausdruck '1 = 0' ist für keine Zeile gültig. Wie auch immer, SQLite berechnet Ergebniszeilen bei Bedarf und wird daher nicht benötigt. –

Verwandte Themen