快乐的pythoner程序员

python flask 使用mysql数据库

2017-12-10  本文已影响2339人  bd6b5cde5ce9

今天我把自己搭建并使用flask+mysql的过程总结一下,自己也温习一下,顺便也将一些碰到的坑记录下来,给其他朋友做个参考。

1、安装mysql数据库

mysql数据库就不介绍了,比较流行的关系型数据库,之前我都是用单位的oracle11g, 这次我选择从头开始找一款开源免费的。我的服务器是ubuntu 16.04系统的,安装起来相当方便

apt-get install mysql-server mysql-client libmysqlclient-dev

安装过程中会让你输入root账号的密码。

检查是否安装成功

netstat -tap | grep mysql

出现listen xxxx/mysqld 则表示监听成功,mysql默认监听3306端口

2、数据库远程访问配置

登录mysql数据库

mysql -u root -p   #之后提示输入密码

创建数据库

mysql>create database myfirstsqldb;

创建用户并控制该数据库 同时赋予了它远程控制该数据库的权限

mysql> grant all on myfirstsqldb.* to 'newuser' identified by 'newpsw';

既有用户root

mysql>update user set host='%' where user='root' and host='localhost';

切换到该数据库

mysql> use myfirstsqldb

查看mysql占用端口

mysql >show global variables like 'port';

创建表

mysql >CREATE TABLE users(id INT, user_name VARCHAR(64),role_id INT);

退出

mysql >quit;

修改配置文件

nano /etc/mysql/mysql.conf.d/mysqld.cnf

bind-address= 127.0.0.1前面的加上#号

带着表示

listen only on localhost which is more compatible and is not less secure.

重启mysql

service mysqld restart

有的版本采用的 service mysql restart

systemctl restart mysql.service

最容易忽视但最重要的一点就是你的防火墙运行3306端口出入

我用的阿里云服务器有一个安全组设置,要将3306端口加入到入方向中。

3、连接mysql,并使用Flask_sqlalchemy简单操作

我们先上代码,然后再详细解释

第1,2行就不细说了,导入相应对象,flask_sqlalchemy 一个Flask插件,将面对对象得方法映射到数据库中的关系对象中,能够让我们以操作对象的方式来操作数据库,自动帮你生成原生的sql 语句。

这些安装均可以用pip install来安装

4-7 是程序的初始化以及配置,Session, Cookies以及一些第三方扩展都会用到SECRET_KEY值,加密用的。,第6行是连接mysql数据库的固定格式,pymysql为指定的驱动,mysqldb目前不支持python3。第7行的值如果设为True 表示每次请求结束后都会自动提交数据库的变动,但像add delete insert等仍需要commit

10-17 User类是建立数据库中users表但模型类,__repr__返回的是对object的描述

21行是进行查询,以列表形式返回结果。

22行传入starter这个模版页中

其他常用查询可以查询官网www.pythondoc.com/flask-sqlalchemy/api.html#flask.ext.sqlalchemy.SQLAlchemy

抽时间我会详细研究一些这个插件的。😄

先记住几个常用的api:

db.create_all() #创建表 如果数据库表已经存在于数据库中,那么db.create_all()不会重新创建或者更新这个表。

db.drop_all() #删除表

#插入/删除/更新

user_haha= User(username='haha', role_id=1)

db.session.add(user_haha)

db.session.commit()

db.session.delete(some_role)

db.session.commit()

user_haha.username='newhaha'

db.session.add(user_haha)

db.session.commit()

补充

最近在访问mysql的时候,发现中文出现错误,多方查证后,是由于在创建database的时候使用的编码格式不支持中文。

所以

在安装完mysql后,先不着急创建数据库,需经历一下2步

1、nano /etc/mysql/my.cnf

加入

[mysqld]

character-set-server=utf8

[client]

default-character-set=utf8

[mysql]

default-character-set=utf8

保存

2、#重启数据服务

service mysql restart

OK 之后创建的数据库和表格就会使用utf-8了

重启后查看编码

show variables like '%char%';

show create database yourdatabase

总结

喜欢用原生sql的可以直接使用pymysql,感觉两者各有优缺点吧。

上一篇下一篇

猜你喜欢

热点阅读