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日

悬赏问题

  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!