服务器数据库搭建及开发(阿里云)从0到0.1

因为最近和小伙伴一起在搞一个项目,需要用到flask、sqlAlchemy、mysql等,然后就开始捣鼓这些东西,纯菜鸡上线,各种不会,各种查。最终是能够运行网上给的一些测试代码了(不容易不容易)
现在把我操作的过程做个整理(也算不上,想起啥就写啥了),然后可以供像我一样的初学者使用。
8.8日写,还在更新

一些安装等的教程

python3.7安装教程
nginx安装教程
不需要安装apache
mysql安装
mysql授权用户登录

Flask_Web开发

遇到的一些报错和问题及其处理

flask拒绝访问:地址和端口的设置

服务器的地址和端口号与本地主机不同,配置’0.0.0.0’而不是’127.0.0.1’,端口号用默认的就可以,其他端口号要安全组开启

报错 ModuleNotFoundError:No module named '_ctype

安装依赖:libffi-devel
单独安装:yum -y install libffi-devel
原解决文章

软连接问题

这个是我自己的失误,安装python时,把文件路径打错了,导致那些指令文件里所指向的位置错误,所以在软链接pip的时候出错,一直指向错误的文件路径.
解决方法有两个:

  1. 在错误的文件路径创建相应的内容(不大好)
  2. 将python里面pip3等指令的文件里的路径修改回来.但是有些文件是无法打开,编码方式位置,只能把可以修改的修改了
    上面的两个方法虽然把我的软链接问题解决了,但是不知道之后会不会出错,所以最好最好还是重装一下python,或者找找有没有修改路径的正确方法

报错 No module named ‘Flask’

这个是因为我是在虚拟环境下安装的flask,所以要在虚拟环境下运行flask web应用
在安装的路径下使用激活的指令source venv/bin/activate其中venv是你在创建虚拟环境时创建的文件名

可能会用到退出指令(也是在安装的目录下):deactivate

报错 No module named ‘MySQLdb’

有一些前续的操作,虽然仍然报错,但是不知是不是最终解决的所必须的
因为我安装的是python3,所以和python2不一样

  1. yum install MySL-python原文链接
  2. pip install mysqlclient原文链接
  3. 最终解决pip install PyMySQL原文链接

后来认证了3就可以解决了,如果不能解决,可以尝试前面两个

SQLALCHEMY_DATABASE_URI的配置

因为网上大多数给的flask的代码直接配置了自己的SQLALCHEMY_DATABASE_URI也没说明是什么,导致我找了好久才知道具体该如何配置,下面是其格式(我安装的是mysql)
mysql://username:password@hostname/databasename
原文链接
当然指定之前你还要创建一个自己的数据库,虽然本身自带就有数据库,但不敢操作(狗头)

警告SQLALCHEMY_COMMIT_ON_TEARDOWN

一般来说在代码里加上app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True就可以了,但是我没用.然后查了资料说修改这个库里面的__init__.py,把None改了就可以
具体操作

性别的数据类型

使用枚举Enum
原文链接
SQLAlchemy常用数据类型

还报错了默认值错误,好像不支持中文,英文没有报错,具体为什么先放着.

将图像存储进数据库

外键连接问题

好像是需要设置__tablename__才可以使用,具体情况还有待考证

报错 pymysql.err.IntegrityError: (1062, "Duplicate entry…)

定义unique=True ,然后gender重复了,所以就报错了.
然后把我它删了,就没报错了.然后在初始化的时候也输入对应的枚举数据

本地登录服务器上的数据库

教程

mysql字符集设置

为了解决之前的性别等属性只能用英文表示,所以要改一下字符集,不然之后的一些介绍性文字都无法显示.
sqlalchemy解决方法
有个更详细一些的,直接对mysql的设置
原文连接

删除结构表的时候一直处于处理状态

可能是有人正在使用,但是更大可能是有事务在使用,且存在锁表.我查看后把所有进程全部kill后就可以正常操作了.
原文连接

flask获取表单数据

网页部分代码

<form method="post" action="register">
    <label>用户名:<input type="text" name="username" value=""></label>
    <label>邮箱:<input type="text" name="email" value=""></label>
    <label>密码:<input type="password" name="password" value=""></label>
    <input type="submit" value="注册">
</form>

flask对应的代码

if request.method == 'POST':
	username = request.form['username']
    email = request.form['email']
    password = request.form['password']
    ...

flask获取post的json格式数据

if request.method == 'POST':
    data = request.get_data()
    json_re = json.loads(data)
    username = json_re['username']
    email = json_re['email']
    password = json_re['pwd']

sql构建多对多关系

原文链接
创建一个中间表来实现多对多联系
构建关系relationship实现关联访问

import cv2报错importError,缺少共享包

解决方法

查询结果转换为字典

解决方法

管理数据库

可以转我的另一篇文章

一些常用的指令

mysql相关

  • 进入数据库mysql -u root -p
  • 创建数据库并配置字符集create database `mydb` character set utf8 collate utf8_general_ci;注意是 `(波浪号的那个) ,而不是’

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值