【问题标题】:How to use python statement to check the sql table is exist or not.?如何使用python语句检查sql表是否存在?
【发布时间】:2017-04-01 19:06:30
【问题描述】:

我想知道如何编写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)

【问题讨论】:

  • 为什么不加IF NOT EXISTS
  • @LFJ,我遇到了一个错误。 _mysql_exceptions.ProgrammingError: (1113, 'A table must have at least 1 column')
  • 你没有定义列,像sql="""CREATE TABLE IF NOT EXISTS resulttable ( id INTEGER NOT NULL PRIMARY KEY AUTO_INCREMENT, ......"""一样使用它
  • 我按照你的python语句添加了列定义,错误是:警告:表'resulttable'已经存在 cursor.execute(sql)
  • 是的,如果表存在,它会向标准输出发出警告,没有其他操作。 .如果您真的想检查表格,请参阅我的答案中的链接。

标签: python mysql sql-server mysql-python


【解决方案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?

【讨论】:

    【解决方案2】:

    使用“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
    

    【讨论】:

      猜你喜欢
      • 2013-05-17
      • 1970-01-01
      • 1970-01-01
      • 2014-10-24
      • 1970-01-01
      • 2013-04-15
      • 2012-04-16
      • 1970-01-01
      • 2021-08-22
      相关资源
      最近更新 更多