flaskweb遇到的问题总结(持续更新)
来源:互联网 发布:美术教程视频软件 编辑:程序博客网 时间:2024/05/29 02:30
1. 添加mysql的支持
1.在书本的基础上添加pip install PyMySQL
2.修改Config
mysql://username:password@hostname/database
SQLALCHEMY_DATABASE_URI = 'mysql://root:123456@127.0.0.1/hello'
改为
SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://root:123456@127.0.0.1/hello'
就可以使用mysql了
2. 邮箱
邮箱不支持Google,可用QQ邮箱替换。
邮箱服务器改为
MAIL_SERVER = 'smtp.qq.com'
同时要QQ邮箱要开启smtp服务
MAIL_USERNAME为开启的QQ邮箱
MAIL_PASSWORD为开启SMTP服务提供的字符串密码
私密问题可用环境变量来替换。
3.数据库操作时无法赋予用户角色
无法赋予用户角色导致一直没有管理员甚至没有一般角色,查看数据库发现用户角色显示NULL:
mysql> select id,username,role_id,email from users;
+—-+———-+———+——————-+
| id | username | role_id | email |
+—-+———-+———+——————-+
| 1 | a | NULL | 11111@qq.com |
| 2 | b | NULL | 22222@qq.com |
+—-+———-+———+——————-+
再次查看models.py里的init(self, **kwargs)函数创建角色的代码
self.role = Role.query.filter_by(permissions=0xff).first()
发现Role.query.filter_by()函数只是查询permissions=0xff的用户,返回的是查询结果。书上说可以加载,有疑问又查看官方文档:
下面这个例子发起了一个查询,加载名为”User” 的用户角色:
user_role = Role.query.filter_by(name=’User’).first()
加载了用户角色,可实际上并没有生成用户角色,直到再暴力添加#2后就可以生成管理员角色:
self.role = Role.query.filter_by(permissions=0xff).first()#1 self.role = Role(permissions=0xff)#2
书上添加查询,是为了确保role里有permissions=0xff也就是管理员,如果里面没有那就返回NULL。这样子程序更加严谨。想到既然查询的是roles表,里面没有数据那不就是一直返回NULL吗,一查询果然没有添加角色数据到表里。添加后再删掉暴力赋值#2,果然又可以生成管理员权限了,同时也验证了first()函数返回查询的第一个结果!
问题解决!最大的问题是查询结果可以用作角色,SQLAlchemy默认处理了数据库的主键!这样就串起来了。
SQLAlchemy 为查询生成的原生SQL 查询语句:
>>> str(User.query.filter_by(role=user_role))'SELECT users.id AS users_id, users.username AS users_username,users.role_id AS users_role_id FROM users WHERE :param_1 = users.role_id'
4. 数据库操作问题小坑
每次开机都会出现数据库无法写入,发现是数据库迁移的问题。这方面没有仔细研究,于是重新开始。
1.删除原来的迁移仓库和迁移脚本
2.重新初始化迁移仓库:
python manage.py db init
切记要删除原来数据库,再create一个新数据库(重新创建时,之后更新不必)
3.创建迁移脚本:
python manage.py db migrate -m " "
检查迁移脚步细节
4.最后提交迁移脚本:
python manage.py db upgrade
之后每次修改数据库后执行3 4
然后在shell环境下写入一些数据。刚开始更改环境后没有退出shell再进入shell导入环境,导致写入数据不成功,觉得还是数据库写入问题!所以改变环境后一定要退出shell再进入。
在遇到问题,解决问题时,切记不能想着一步到位,要想到会有其他因素导致这个问题,要是一直出现问题,最好先停下来想想。确定哪一步是正确的,验证好后就要考虑是否是其他原因。
- flaskweb遇到的问题总结(持续更新)
- Jenkins遇到的问题(持续更新)
- 总结面试中遇到的问题(持续更新)
- mysql5.7安装遇到的问题总结,持续更新
- Git使用总结(遇到问题,持续更新)
- c++(c语言)编程过程中遇到的细微问题总结(持续更新)
- 刚接触ubuntu,遇到的小问题总结一下(持续更新)
- 调试STM32过程中遇到的问题总结(持续更新)--KEIL4+C语言
- 总结开始使用百度地图Android SDK中遇到的问题及解决方案(持续更新)
- 编程时遇到的报错总结(持续更新)
- Android开发遇到的问题笔记(持续更新)
- 安卓开发遇到的一些问题(持续更新)
- Mozilla扩展开发过程遇到的问题(持续更新)
- hadoop2.0 遇到的问题 (持续更新)
- 使用KVM虚拟机遇到的问题(持续更新)
- Hadoop运维中遇到的问题(持续更新中......)
- 使用CentOS 遇到的问题以及解决方法(持续更新)
- 学习spring mvc 时遇到的问题(持续更新)
- CSS Gradient详解
- 隐马尔科夫学习(HMM)
- 【BZOJ1898】[Zjoi2005]Swamp 沼泽鳄鱼【DP】【矩阵乘法】
- 允许用户仅修改一次用户名
- Android获取图片的路径方法总结
- flaskweb遇到的问题总结(持续更新)
- React服务器渲染
- Win7 下基于 Oracle VM VirtualBox 安装 fedora8
- SVN安装、配置、使用笔记
- Windows下面替换命令实现,最新修复一个BUG
- Linux 的变量命名规则
- SizeClass和AutoLayout教程1
- shiro学习和使用实例(2)——登陆认证和授权
- Linux TCP队列相关参数的总结