Goodluck_Gougou 2020-08-04 20:58 采纳率: 66.7%
浏览 250
已采纳

python 初始化数据库,没能创建表..sqlite..

写了一个类,将sqlite查询语句封装在里面...放在另外一个文件里

在单文件测试创建文件的时候没有问题.

但是从主程序里就出现问题了..
sqlite3.OperationalError: no such table: image 错误

数据库是已经创建了..但是表没创建..

图片说明

代码如下..

class DBmall(object):
    '''封装一个查询..避免老是少写cursor .. commit'''
    def __init__(self):
        self.conn = sqlite3.connect('./static/imagedata1')
        # 有数据库文件 跳过 createDB()
        if not os.path.exists('./static/imagedata1'):
            self.createDB()

    # 创建表
    def createDB(self):
        cursor = self.conn.cursor()
        try:
            CREATE_image = '''CREATE TABLE image(imageMD5   TEXT............, );'''
            cursor.execute(CREATE_image)
            self.conn.commit()
            # 关闭 游标
            cursor.close()
        except Exception as e:
            print('数据库错误', e)


    # 查第一条
    def findone(self, sql, values=None):
        cursor = self.conn.cursor()
        # 执行 查询语句
        if values:
            cursor.execute(sql, values)
        else:
            cursor.execute(sql)
        # 获取数据,数据格式为元组(tuple)
        results = cursor.fetchone()
        # 提交事务: 只是查询select 不用也行
        self.conn.commit()
        # 关闭 游标
        cursor.close()
        return results

主文件, 使用的代码

DB = DBmall()

frist=DB.findone('select * from image')  #这行报错..

后来分析下..感觉应该是 数据表还没创建完成..就开始执行查询语句了..

请问是什么问题呢?
谢谢 大神!!!

  • 写回答

2条回答 默认 最新

  • jingluan666 2020-08-05 09:36
    关注

    可能数据库文件之前就已经存在了,但不包含image表

       if not os.path.exists('./static/imagedata1'):
             self.createDB()
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 12月31日

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度