Flask学习(三):SQLAlchemy无法创建数据库

书中的代码如下,设置数据库配置

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

然后新建模型,然后运行代码发现根本无法运行,运行之后就会提示错误!
Flask学习(三):SQLAlchemy无法创建数据库_第1张图片
从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]
Flask学习(三):SQLAlchemy无法创建数据库_第2张图片
建议路径使用相对路径,使用绝对路径的话要自己写出来,因为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(),这时候打开数据文件就会发现里面有我们创建的表结构了,然后再去界面操作就可以了。

你可能感兴趣的:(Python)