Estoy haciendo:

    try:
        conn = sqlite3.connect('bags_of_coins.db')
        print('Db Creation Successful')
    except:
        print('Db Creation NOT Successful')
    try:
        conn.execute('''CREATE TABLE bags
            (ID INTEGER PRIMARY KEY,
            bag TEXT    NOT NULL,
            );''')

        print('Table Creation Successful')
    except:
        print('Table Creation NOT Successful')
    try:
        conn.execute("INSERT INTO bags (bag) \
            VALUES ('test')");
        conn.commit()
    except:
        print('Insert NOT Successful')

    #finally.
    conn.close()

Pero sigue produciendo:

Db Creation Successful
Table Creation NOT Successful
Insert NOT Successful

¿Alguien ve algo que estoy haciendo mal? Estaba siguiendo esta guía pero no puedo ver el problema. Gracias.

0
Jshee 10 dic. 2015 a las 21:13

3 respuestas

La mejor respuesta

Tienes una coma antes) en este lugar:

CREATE TABLE bags
(ID INTEGER PRIMARY KEY,
bag TEXT    NOT NULL,  <- here
);

Bórralo.

1
Мотя 10 dic. 2015 a las 18:17

Golpear ciegamente el intento ... excepto que sin mostrar el error de la excepción solo le causará pena y dolor, use la excepción disponible para enumerar el error específico.

import sqlite3
try:
    conn = sqlite3.connect('bags_of_coins.db')
except sqlite3.Error as e:
    print('Db Creation NOT Successful', str(e))
mycursor = conn.cursor()
try:
    mycursor.execute("CREATE TABLE bags (ID INTEGER PRIMARY KEY,bag TEXT NOT NULL)")
except sqlite3.Error as e:
    print("Table creation failed", str(e))
try:
    mycursor.execute("insert into bags (bag) values (?)", (['test']))
    conn.commit()
except sqlite3.Error as e:
    print("table insert failed", str(e))

#finally.
conn.close()
0
Rolf of Saxony 10 dic. 2015 a las 18:48

Prueba esto:

import sqlite3

conn = None
try:
    conn = sqlite3.connect('bags_of_coins.db')
    print('Db Creation Successful')
except:
    print('Db Creation NOT Successful')
try:
    with conn:
        conn.execute("CREATE TABLE bags (ID INTEGER PRIMARY KEY, bag TEXT NOT NULL);")
        print('Table Creation Successful')

        cursor = conn.execute("INSERT INTO bags (bag) VALUES ('test')")
        conn.commit()
        print("Insert Successful" if cursor.rowcount > 0 else "Insert NOT Successful")
except:
    print('Table Creation NOT Successful')

Su error fue crear la tabla. El 'con' es una ventaja que agregué, se encarga de cerrar la conexión cuando el bloque termina por cualquier motivo, por lo que no necesita el bloque 'finalmente'.

No dudes en preguntar si tienes alguna duda.

0
epinal 10 dic. 2015 a las 18:35