2014-02-03 2 views
0

Я новичок в SQL. Я хочу проверить, существует ли таблица в базе данных или нет. Если он не существует, чем создавать его. Также я хочу проверить, что запись существует в таблице или нет. Если существует, чем обновлять его новыми данными, If не существует, чем вставлять новую запись в таблицу. Вот код. Я не знаю, как проверить существующую таблицу, запись.Как проверить таблицу в sqlite3 или нет

import sqlite3 as lite    
    con = lite.connect('test.db') 

     cur = con.cursor()  

     con.execute('''CREATE TABLE EMPLOYEE 
        (ITEMA   TEXT PRIMARY KEY  NOT NULL, 
        ITEMB   CHAR(50)     NOT NULL,      
        ITEMC  CHAR(50), 
        ITEM0   TEXT 
        ITEM1   TEXT 
        ITEM2   TEXT 
        ITEM3   TEXT 
        ITEM4   TEXT);''') 



     con.execute("INSERT INTO EMPLOYEE (ID,NAME,ADDRESS,MOBILE_NUMBER,TRANSPORT_FOR_LUNCH,ONLY_DROP,KIDS,ADULTS) \ 
     VALUES (%s,%s',%s,%s,%s,%s,%s,%s)" %(ia,ib,ic,i0,i1,i2,i3,i4)); 
+0

имена столбцов вашего ** CREATE TABLE ** и ваши ** INSERT INTO ** утверждения не соответствуют – sqlab

ответ

0

Для проверки таблицы существования в SQLite, вы можете сделать что-то вроде:

cursor = con.cursor() 
    statement = "SELECT name FROM sqlite_master WHERE type='table';" 
    if (table_name,) in cursor.execute(statement).fetchall(): 
     print "Table %s exists." % table_name 

Чтобы обновить или создать в зависимости от предсуществования записи, SQLite позволяет использовать replace, который псевдоним для insert or replace:

replace into table_name (columns) values (values) 
+0

Почему вы читаете * все * имена таблиц из 'sqlite_master'? –

+0

Вместо INSERT, когда я использую REPLACE в приведенном выше коде. Я становлюсь ниже ошибки. Ошибка такого столбца: A000000: – Jagat

0
CREATE TABLE EMPLOYEE IF NOT EXISTS .. 

создает только если это делать es не существует

Смежные вопросы