Crossin的编程教室

标题: web.py SQlite相关问题 [打印本页]

作者: JasonHsia    时间: 2018-2-14 08:06
标题: web.py SQlite相关问题
老师们好,又见面了。我肯定是建立数据库里的表了,但是只有建立的时候才能查到信息。关闭以后再查,用‘.tables’就什么也没有了,不知道为什么,是因为数据库保存路径的问题吗?
下面是微信平台上关于简单数据库那一部分的代码。

import web

urls = (
'/', 'index'
)

db = web.database(dbn='sqlite',db='MovieSite.db')

render = web.template.render('templates/')

class index:
    def GET(self):
        movies = db.select('movie')
        return render.index(movies)

if __name__ == "__main__":
    app = web.application(urls, globals())
    app.run()
问题是我的网页总是报错:no such table:movie.
我确定自己已经建好表了,cmd相关情况如下:

D:\python>sqlite3
SQLite version 3.22.0 2018-01-22 18:45:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .databases
main:
sqlite> create table movie(title,year,country,abstract);
sqlite> insert into movie
   ...> values ('阿甘正传', 1994, '美国', 'Life is like a box of chocolates.');
sqlite> insert into movie
   ...> values ('肖申克的救赎', 1994, '美国', 'Hope is a good thing.');
sqlite> select*from movie;
阿甘正传|1994|美国|Life is like a box of chocolates.
肖申克的救赎|1994|美国|Hope is a good thing.
sqlite> .tables
movie
sqlite> .quit

D:\python>python web1.py 127.0.0.1
http://127.0.0.1:8080/
ERR: SELECT * FROM movie

Traceback (most recent call last):
  File "C:\Python3\lib\site-packages\web\application.py", line 257, in process
    return self.handle()
  File "C:\Python3\lib\site-packages\web\application.py", line 248, in handle
    return self._delegate(fn, self.fvars, args)
  File "C:\Python3\lib\site-packages\web\application.py", line 488, in _delegate
    return handle_class(cls)
  File "C:\Python3\lib\site-packages\web\application.py", line 466, in handle_class
    return tocall(*args)
  File "D:\python\web1.py", line 13, in GET
    movies = db.select('movie')
  File "C:\Python3\lib\site-packages\web\db.py", line 705, in select
    return self.query(qout, processed=True)
  File "C:\Python3\lib\site-packages\web\db.py", line 1058, in query
    out = DB.query(self, *a, **kw)
  File "C:\Python3\lib\site-packages\web\db.py", line 665, in query
    self._db_execute(db_cursor, sql_query)
  File "C:\Python3\lib\site-packages\web\db.py", line 596, in _db_execute
    out = cur.execute(query, params)
sqlite3.OperationalError: no such table: movie
127.0.0.1:54375 - - [13/Feb/2018 23:59:13] "HTTP/1.1 GET /" - 500 Internal Server Error





作者: Titus    时间: 2018-4-18 20:15
同学你好啊,我的也是说没有movie这个表,可是我通过在sqlite的控制台输入命令.tables,结果显示movie,说明存在的吧。请问你是如何解决的呢,谢谢
作者: helloworld小白    时间: 2018-6-10 21:25
我也遇到同样的问题,请问同学你最后是怎么解决的呢?
而且我不知道我创建的数据库存储在哪里,我是C盘下进入sqlite控制台的,但是创建完后到C盘去找却找不到这个数据库文件,求教QWQ
作者: crossin先生    时间: 2018-6-10 23:51
这个数据库文件,你们最好手动指定位置

想要把sqlite3创建数据库文件到指定路径:(windows 为例)

1.cmd进入到你想要保存文件的路径

2.sqlite3 database.db

https://blog.csdn.net/qq_27246079/article/details/79636085
作者: zzz121    时间: 2018-6-19 14:44
我已经解决了,你建立运行sqlite3 MovieSite.db 的之前,先把运行位置定位到你code.py所在的目录,具体方法是cd C:/Users/zzz/Desktop/PYTHON练习/web-practice/,当然这是我的目录;然后在进行一系列的数据库建表插入工作就可以了!




欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/) Powered by Discuz! X2.5