python sqlite3 查询数据库里是否存在此表以及判断是否未查询到数据

715 阅读1分钟

sqlite日记1

查询数据库里是否存在此表

sqlite中有一个叫sqlite_master的自建表,这个表里有所有已建的表的名字,里面有以下字段

  1. type 记录项目的类型,此表里全是table
  2. name 表的名字
  3. tbl_name 记录所从属的表名,如索引所在的表名。对于表来说,该列就是表名本身
  4. rootpage 记录项目在数据库页中存储的编号。对于视图和触发器,该列值为0或者NULL
  5. sql 记录创建该项目的SQL语句
    用python操作sqlite时,查询成功select会返回可迭代的cursor对象,失败也会返回一个‘空’的cursor对象,但是检测是否查询成功不能用if cursor ==None即使未查到对象cursor也不会为None,而应该使用len(list(cursor))这里的cursor指代你execute的返回值,当len(list(cursor))==0时代表没有查到你想要的数据。
    ps.如果cursor为空的话是不能用for去迭代的,不能进入for循环体里 除了上面这个方法外,还可以使用cursor.fetchone(),cursor.fetchmany()cursor.fetchall()来判断是否返回为空

cursor.fetchone() 该方法获取查询结果集中的下一行,返回一个单一的序列,当没有更多可用的数据时,则返回 None。
cursor.fetchmany([size=cursor.arraysize]) 该方法获取查询结果集中的下一行组,返回一个列表。当没有更多的可用的行时,则返回一个空的列表。该方法尝试获>取由 size 参数指定的尽可能多的行。
cursor.fetchall() 该例程获取查询结果集中所有(剩余)的行,返回一个列表。当没有可用的行时,则返回一个空的列表。