2016-11-18 4 views
1

私は、SQLテーブルが存在するかどうかを確認するためのpython文を書く方法を知りたいと思います。Python文を使用してSQLテーブルをチェックする方法はありますか?

テーブルが存在する場合は、テーブルにデータを挿入します。それ以外の場合はテーブルを作成します。

テーブル名は、検査部を行う方法、

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

"resulttable" です??

私はこの文を追加し、私はエラーを得た:

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 =" ""のように使用して列を定義していません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?

関連する問題