[flask实践] 解决qq邮箱/mysql的相关配置问题
笔者经过flask web(Miguel著,封面是一条狗)一书的学习,打算实现一个旅游类网站,在此过程中发现,相对于书中的flasky博客程序,需要作出一些改变:
1. 注册邮箱:国内要使用126,qq等邮箱。默认读者了解过flasky邮件的实现方式,而使用126、qq邮箱的不同之处有:
第一,邮箱端口 ['MAIL_PORT'] = 465 不同于gmail的587端口
第二,使用协议 ['MAIL_USE_SSL'] = True 不同于gmail的TLS协议
第三,用户名 ['MAIL_USERNAME'] = '2327****81' 只需提供用户名,不需要后缀名(@qq.com)
第四,密码 ['MAIL_PASSWORD'] = 'apnrtcqkuq****ce' 到邮箱运营商开启stmp服务,并获取授权码(并非邮箱的登录密码)
其他配置与flasky环境类似,可以使用单独的config文件存储这些关乎安全的信息。
2. 更换数据库:书中使用的sqlite是一种轻型的本地数据库,目的在于简单易学,但想在互联网上部署一个可供人们访问的web程序,需要使用那些高并发、支持远程服务的中型数据库,例如MySQL,在新浪云上部署web程序最好使用MySQL,因为在计算量不高的情况下,是免费的。 (更新:笔者研究了三个星期如何在新浪云web服务器上使用flask-sqlalchemy提供的方法连接mysql,还是以失败告终。最后选择了阿里云,尽管搭建uwsgi+nginx需要一点时间)书中作者也推荐了一个免费部署平台Heroku,但遗憾的是对国内不太友好。
Flask框架使用mysql和sqlite类似,我使用的是Ubuntu下的Pycharm开发环境,建立flask工程。Pycharm附带了数据库可视化插件,无需使用navicat这些工具。
安装MySQL :
sudo apt-get install mysql-server
sudo apt-get
install mysql-client
sudo apt-get
install libmysqlclient-dev
安装完毕就启用了mysql服务,这个时候无论从终端登录mysql的root账户还是Pycharm访问数据库都会报1045错误,原因在于没有给root用户设置密码,解决方法和相关的指令不再赘述,参考:http://blog.csdn.net/wwwdc1012/article/details/51745906
能够以root新密码登录mysql后,根据程序的需要创建用户和数据库。常用的MySQL指令参考:http://www.cnblogs.com/penciler/p/4813157.html
需要注意的是,我们只需要创建数据库以及访问该数据库的用户名、密码,并不需要创建该数据库内的表,表应该在web服务启动时创建(参考书中的models类)。
在flask工程安装并引入Flask-MySQL、Flask-MySQLdb、Flask_SQLalchemy包,安装完毕后在程序中填写数据库URI:
['SQLALCHEMY_DATABASE_URI'] = 'mysql://用户名:密码@localhost:3306/数据库名'
打开Pycharm的Database插件-->DataSourse-->MySQL,输入刚才在机器中创建好的mysql用户名、密码、数据库名,点击Test Connection,显示成功,你的可视化数据库已经配置完毕,flask程序可以在数据库中读写数据,在Database插件可以直观的看到有哪些表、主键、外键、具体的数据。
但不知是否和Pycharm的版本有关,我的Test Connection按钮是灰色的,显示缺少驱动文件MySQL Connector/J ver5.1.40,旁边提供了Download链接但是点下去毫无反应。在MySQL官网下载这个驱动文件,并在这个窗口Additional添加此驱动,重启Pycharm,Test Connection按钮可以正常工作。 至此,实际flask web程序中使用到的邮箱和数据库的相关问题就解决了。
[flask实践] 解决qq邮箱/mysql的相关配置问题的更多相关文章
- [flask实践] 解决mysql数据库不支持中文的问题
接上一篇文章,在解决了mysql+flask环境配置问题之后,往数据库存中文字符串会报1366错误,提示不正确的字符.继而发现默认的mysql采用了Latin1字符集,这种编码是不支持中文的. 如果想 ...
- flask入门与发送邮件与QQ邮箱
前言: 快两个月没写博客了, 原因是懒了, 没有最初写博客那种看到阅读量上涨, 别人给自己文章点赞后的开心. 心态也发生了不少变化. 有机会再来写写. 前两个月我去厦门某公司实习, 本着去厦门玩一玩还 ...
- wordpress | WP Mail SMTP使用QQ邮箱发布失败的解决办法
在使用contact form 7插件时遇到邮件发送失败的问题,经过检查发现是因为服务器不支持mail()函数,判断是否支持mail()函数可以参考http://www.diyzhan.com/201 ...
- 【微信】QQ邮箱助手不提醒解决
1.问题及原因: 微信上的QQ邮箱提醒功能失效了,收到信后不提醒.忘了是使用了TIM,还是使用了QQ邮箱之后才出现的. 不过原因是:QQ邮箱提醒被设置为仅在QQ邮箱客户端提醒 2.解决: 重新安装QQ ...
- flask 发送QQ邮箱
from flask import Flask from flask_script import Manager, Shell from flask_mail import Mail, Message ...
- jeakins配置邮件通知,附带解决535报错:authentication failed,如果发现测试邮件可以发出,项目构成无法发出邮件,请开启SSL认证,端口号改为(465),qq邮箱、163邮箱通用
535报错解决方案:调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd即可成功发送邮件 如果设置的邮箱 ...
- 关于企业邮箱无法提醒解决办法(未安装邮件客户端可添加至网易邮箱大师/qq邮箱等)
关于企业邮箱无法提醒解决办法: 一.使用现有的邮箱客户端,以下以网易的邮箱大师为例mail.exe 点击客户端左边的添加邮箱账号,在出现的对话框中输入账号和密码后,点击登陆按钮后,等待添加完成即可,邮 ...
- 一文解决MySQL时区相关问题
前言: 在使用MySQL的过程中,你可能会遇到时区相关问题,比如说时间显示错误.时区不是东八区.程序取得的时间和数据库存储的时间不一致等等问题.其实,这些问题都与数据库时区设置有关,本篇文章将从数据库 ...
- flask配置qq邮箱发送邮件
1.第三方登录qq邮箱不是使用邮箱密码,而是使用独立的授权码: 2.开始在python程序中使用os.environ.get()一直无法获取到环境变量,即使是用source命令重新加载配置文件后使用e ...
随机推荐
- hack查询地址
悲催的IE! http://browserhacks.com/
- C++类与对象(05)
类是具有惟一标识符的实体:在类中声明的任何成员不能使用extern.auto和register关键字进行修饰:类中声明的变量属于该类,在某些情况下,变量也可以被该类的不同实例所共享. 访问权限用于控制 ...
- clone对象
在JavaScript中,当对象作为参数传给函数的时候,在函数内部对这个对象的属性进行修改时,函数外部的对象属性也会跟着被修改,而有些时候我们并不想原来的对象数据发生改变,这时候就需要切断对象之间的引 ...
- Bootstrap的核心——栅格系统的使用
前 言 絮叨絮叨 Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的,它简洁灵活,使得 Web 开发更加快捷. 而栅格系统是Bootstrap中的核心,正是因为栅格系统的 ...
- 编译错误:expected an indented block
python 对缩进要求非常严格,当运行时出现以下几种情况时,就需要修改缩进: 1.expected an indented block 直接缩进4个space空格或者一个tab.
- express紧急回顾随笔
四行代码搭建服务器 var express = require('express'); var app = express(); //设定静态路径 所有请求优先在此路径查找 //不要把服务器配置JS文 ...
- HTML+CSS学习任务清单
HTML部分:掌握HTML的全部语法,他的主体结构,超连接及常用标记的使用 CSS部分:掌握CSS的三种选择器的使用,明白如何使用DIV+CSS进行网页布局,搞清楚浮动问题! 1,HTML的语法(包括 ...
- js判断值为null
今天在做项目的时候,犯了一个着实不应该的错误,拿到data为null,然后判断如果为null执行A,否则执行B 我错误的代码是 if(data===null){ A; }else{ B; } 怎么调试 ...
- mvc4 实现自己的权限验证 仿Authorize与AllowAnonymous原理
参考文章 :http://www.cosdiv.com/page/M0/S878/878978.html 实现的效果:在控制器上(Controller)验证权限,在动作(Action)上不验证. 用M ...
- Lua 和 C 交互中虚拟栈的操作
Lua 和 C 交互中虚拟栈的操作 /* int lua_pcall(lua_State *L, int nargs, int nresults, int msgh) * 以保护模式调用具有" ...