Flask学习(三):SQLAlchemy无法创建数据库
来源:互联网 发布:js设置table属性 编辑:程序博客网 时间:2024/06/08 03:03
书中的代码如下,设置数据库配置
basedir = os.path.abspath(os.path.dirname(__file__))app.config['SQLALCHEMY_DATABSE_URI'] = 'sqlite:///' + os.path.join(basedir, 'data.db')app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True
然后新建模型,然后运行代码发现根本无法运行,运行之后就会提示错误!
从traceback看不出来什么错误,错误信息里面显示的是
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: users [SQL: 'SELECT users.id AS users_id, users.username AS users_username, users.role_id AS users_role_id \nFROM users \nWHERE users.username = ?\n LIMIT ? OFFSET ?'] [parameters: ('1231', 1, 0)]
找不到这个表,理论上执行之后会在我当前目录下面可以创建一个data.db的文件,然后并没有创建。
于是我输出了SQLALCHEMY_DATABSE_URI的绝对路径:
sqlite:///D:\projec\www\data.db
显然这个路径是不对的,原作者写这个代码的时候可能是在Linux系统上运行的,但是我现在测试是在Windows上的,所以拼接出来的路径是一个错误的路径。
官方文档上写出来了[http://docs.sqlalchemy.org/en/latest/core/engines.html]
建议路径使用相对路径,使用绝对路径的话要自己写出来,因为Windows中的斜杠和Linux的不一样,拼接出来的路径会不对。
app.config['SQLALCHEMY_DATABSE_URI'] = 'sqlite:///data.db'
直接放在当前目录下,或者使用其他相对路径。
改完之后就可以了,但是过段时间又不行了。。。。文件目录下面有不能生成文件了。。。真的蛋疼,生成文件也没有错误提示。
想着检查下文件夹,发现我的整个工程文件夹都是只读的,莫名其妙,把权限给上之后就又可以了。
希望这次是真的可以了,然后在shell下面执行数据文件正常生成了。
记住:如果直接在pycharm里面运行代码之后,使用浏览器打开之后输入提交之后还是会有一开始的错误。
这个时候使用pycharm打开生成data.db文件会发现其实里面是空的,在model里面创建的两个对象其实并没有生成表结构。实际应该是shell中进入python然后运行from hello import db(备注:我是写在hello.py里面,然后实例是db = SQLAlchemy(app)),引用db之后,执行db.create_all(),这时候打开数据文件就会发现里面有我们创建的表结构了,然后再去界面操作就可以了。
- Flask学习(三):SQLAlchemy无法创建数据库
- sqlalchemy学习(三):创建数据库表格
- flask-sqlAlchemy 创建表
- Flask-SQLAlchemy管理数据库
- Flask sqlalchemy操作数据库
- flask SQLAlchemy 数据库操作
- Flask-sqlalchemy连接数据库
- Flask-SQLAlchemy 学习
- Flask-SQLALchemy学习笔记
- Flask-SQLAlchemy 学习总结
- Flask-SQLAlchemy学习总结
- SQLAlchemy 学习(三)
- Flask零基础到项目实战(四)SQLAlchemy数据库(三)
- flask-sqlalchemy(1)
- flask sqlalchemy(二)
- flask-SQLALCHEMY 远程连接数据库
- Flask Sqlalchemy数据库操作例程
- python Flask-SQLAlchemy操作数据库
- java.lang.RuntimeException: Unable to get provider android.support.v4.content.FileProvider
- Android代码混淆
- 期末考试 编程题#9:人群的排序和分类(Coursera 程序设计与算法 专项课程3 C++程序设计 郭炜、刘家瑛;类的继承)
- 用SQLSever2008R2创建的数据库 怎么附加到 SQLSever2008
- Android样式开发 Shape
- Flask学习(三):SQLAlchemy无法创建数据库
- 【Scikit-Learn 中文文档】成对的矩阵, 类别和核函数
- 使用 Binder IPC
- C语言二叉树之二叉链表
- 最大流问题(转载)-EK算法
- Laravel 5.3 学习系列一:安装、配置
- linux 文件中快速定位
- 171205之JS总结
- Bash Shell