笔者经过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的相关配置问题的更多相关文章

  1. [flask实践] 解决mysql数据库不支持中文的问题

    接上一篇文章,在解决了mysql+flask环境配置问题之后,往数据库存中文字符串会报1366错误,提示不正确的字符.继而发现默认的mysql采用了Latin1字符集,这种编码是不支持中文的. 如果想 ...

  2. flask入门与发送邮件与QQ邮箱

    前言: 快两个月没写博客了, 原因是懒了, 没有最初写博客那种看到阅读量上涨, 别人给自己文章点赞后的开心. 心态也发生了不少变化. 有机会再来写写. 前两个月我去厦门某公司实习, 本着去厦门玩一玩还 ...

  3. wordpress | WP Mail SMTP使用QQ邮箱发布失败的解决办法

    在使用contact form 7插件时遇到邮件发送失败的问题,经过检查发现是因为服务器不支持mail()函数,判断是否支持mail()函数可以参考http://www.diyzhan.com/201 ...

  4. 【微信】QQ邮箱助手不提醒解决

    1.问题及原因: 微信上的QQ邮箱提醒功能失效了,收到信后不提醒.忘了是使用了TIM,还是使用了QQ邮箱之后才出现的. 不过原因是:QQ邮箱提醒被设置为仅在QQ邮箱客户端提醒 2.解决: 重新安装QQ ...

  5. flask 发送QQ邮箱

    from flask import Flask from flask_script import Manager, Shell from flask_mail import Mail, Message ...

  6. jeakins配置邮件通知,附带解决535报错:authentication failed,如果发现测试邮件可以发出,项目构成无法发出邮件,请开启SSL认证,端口号改为(465),qq邮箱、163邮箱通用

    535报错解决方案:调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd即可成功发送邮件 如果设置的邮箱 ...

  7. 关于企业邮箱无法提醒解决办法(未安装邮件客户端可添加至网易邮箱大师/qq邮箱等)

    关于企业邮箱无法提醒解决办法: 一.使用现有的邮箱客户端,以下以网易的邮箱大师为例mail.exe 点击客户端左边的添加邮箱账号,在出现的对话框中输入账号和密码后,点击登陆按钮后,等待添加完成即可,邮 ...

  8. 一文解决MySQL时区相关问题

    前言: 在使用MySQL的过程中,你可能会遇到时区相关问题,比如说时间显示错误.时区不是东八区.程序取得的时间和数据库存储的时间不一致等等问题.其实,这些问题都与数据库时区设置有关,本篇文章将从数据库 ...

  9. flask配置qq邮箱发送邮件

    1.第三方登录qq邮箱不是使用邮箱密码,而是使用独立的授权码: 2.开始在python程序中使用os.environ.get()一直无法获取到环境变量,即使是用source命令重新加载配置文件后使用e ...

随机推荐

  1. React UI 组件库uiw v1.2.8 发布

    uiw 高品质的UI工具包,基于React 16+的组件库.

  2. VB 用代码创建的控件和接收事件

    在声明公共变量的位置加上这句就可以了 Dim WithEvents NewButton As Button form_load中添加 NewButton = New Button        New ...

  3. ES6 let和const详解及使用细节

    ES6之前javascript只有全局作用域和函数作用域,所以经常会遇到变量提升了或者使用闭包的时候出错的问题. 所有a[i]都会输出10: var arr=[]; for (var i=0;i< ...

  4. Linux学习(四)单用户模式、救援模式、虚拟机克隆、linux互连(包括密匙登录)

    一.单用户模式 忘记root密码后,找回密码有两种方法: 单用户(grub没有加密的情况下可以使用) 救援模式 这一节我们先讲单用户模式   1.先重启(3种方法) reboot init 6 sho ...

  5. HDU 4267 A Simple Problem with Integers(树状数组区间更新)

    A Simple Problem with Integers Time Limit: 5000/1500 MS (Java/Others)    Memory Limit: 32768/32768 K ...

  6. Codeforces 376C. Socks

    C. Socks time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  7. Python函数篇:dict函数和列表生成式

    1.dict函数语法:dict()dict(**kwarg) dict(mapping, **kwarg) dict(iterable, **kwarg) 第一种:dict()构造一个空字典 h=di ...

  8. 深入理解JavaScript中的继承:原型链篇

    一.何为原型链 原型是一个对象,当我调用一个对象的方法时,如果该方法没有在对象里面,就会从对象的原型去寻找.JavaScript就是通过层层的原型,形成原型链. 二.谁拥有原型 任何对象都可以有原型, ...

  9. win10提示管理员已阻止你运行此应用,如何强制运行

      方法/步骤     这里以自己遇到的一个软件为例,下图就是禁止的图画:   在开始菜单中输入"cmd",然后以管理员身份运行:   按住"shift"键,同 ...

  10. C# 面向对象基础&封装&继承&多态&加深一下冒泡排序写法

    (一)面向对象是什么? 面向对象是一种编程思想 (二)为什么要用面向对象? 1.结构清晰 2.易于维护 3.方便扩展 (三)new一个对象是什么过程? 实例化构造函数创建对象的过程就是将类实例化的过程 ...