2016-11-18 81 views
1

我想知道如何編寫python語句來檢查sql表是否存在。如何使用python語句來檢查sql表是否存在或不存在。

如果該表存在,那麼我會將數據插入表中,否則,我將創建表。

表名是 「resulttable」,

db = MySQLdb.connect("localhost","root","123","test") 
cursor = db.cursor() 

sql="""CREATE TABLE resulttable (id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, writerName CHAR(20) NOT NULL, matchWords LONGTEXT, matchMagazine LONGTEXT, matchNews LONGTEXT)""" 
cursor.execute(sql) 
db.close() 

怎麼做檢查的一部分?

我添加此說法,但我得到了一個錯誤:

sql="""CREATE TABLE IF NOT EXISTS resulttable (id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, writerName CHAR(20) NOT NULL, matchWords LONGTEXT, matchMagazine LONGTEXT, matchNews LONGTEXT)""" 
    cursor.execute(sql) 
    db.close() 

的錯誤是: 警告:表 'resulttable' 已存在 cursor.execute(SQL)

+0

爲什麼不添加「IF NOT EXISTS」? –

+0

@LFJ,我得到了一個錯誤。 _mysql_exceptions.ProgrammingError:(1113,'表格必須至少有1列') – dd90p

+0

您沒有定義列,使用它像'sql =「」「CREATE TABLE IF NOT EXISTS resulttable(id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, ......「」「' –

回答

1

使用「TABLES 「信息模式視圖。 http://dev.mysql.com/doc/refman/5.0/en/information-schema.html

SELECT * FROM information_schema.tables 
WHERE table_name = 'YOUR TABLE' 

你可以做類似下面將此視圖代碼:

def checkTableExists(dbcon, tablename): 
    dbcur = dbcon.cursor() 
    dbcur.execute(""" 
     SELECT COUNT(*) 
     FROM information_schema.tables 
     WHERE table_name = '{0}' 
     """.format(tablename.replace('\'', '\'\''))) 
    if dbcur.fetchone()[0] == 1: 
     dbcur.close() 
     return True 

    dbcur.close() 
    return False 
1
db = MySQLdb.connect("localhost","root","123","test") 
cursor = db.cursor() 

sql="""CREATE TABLE IF NOT EXISTS resulttable (id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, writerName CHAR(20) NOT NULL, matchWords LONGTEXT, matchMagazine LONGTEXT, matchNews LONGTEXT)""" 
cursor.execute(sql) 
# add insert staff 
# insert_sql = "inset ..." 
# cursor.execute(sql) 
cursor.close() 
db.close() 

,如果你想如果反正存在檢查表,檢查該python - how to check if table exists?

相關問題