2015-12-10 6 views
0

Im делает:sqlite3 неспособность создать/вставить таблицу

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

Но он продолжает выводить:

Db Creation Successful 
Table Creation NOT Successful 
Insert NOT Successful 

Кто-нибудь видел ли что-нибудь я делаю неправильно? Я следил за этим guide, но я не могу видеть проблему. Благодарю.

+0

Почему бы не * удалить * одеяло 'try ... except' и выяснить, какое именно исключение выбрасывается? Это очень редко * вам действительно нужно использовать такую ​​обработку исключений в стиле Pokemon (вы обычно * не * хотите поймать их все). –

ответ

1

Вы запятая раньше) в этом месте:

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

удалить его.

+0

где? Можете ли вы показать код – Jshee

+0

Perfect. Спасибо! Дайте мне немного и плохо согласитесь – Jshee

0

Попробуйте это:

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

Ваша ошибка создания таблицы. «С» - это плюс, который я добавил, он заботится о закрытии соединения, когда блок заканчивается по какой-либо причине, поэтому вам не нужен блок «finally».

Не стесняйтесь спрашивать, есть ли у вас какие-либо сомнения.

0

Слепое избиение try..except, не показывая ошибки из исключения, просто вызовет у вас горе и душевную боль, используйте исключение, доступное для перечисления конкретной ошибки.

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() 
Смежные вопросы