Flask数据库迁移及建表

1 数据库迁移

1.1 目录结构

|-- app
|   |-- __init__.py
|   |-- __pycache__
|-- config.py
|   |-- README
|   |-- __pycache__
|   |-- alembic.ini
|   |-- env.py
|   |-- script.py.mako
|   `-- versions
`-- run.py

1.1 配置迁移

__init__.py

# 引入库
from falsk import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
# 实例化
app = Flask(__name__)
# 数据库
db = SQLAlchmey(app)
# 迁移
migrate = Migrate(app, db)
# 管理
manager = Manager(app)
# 迁移指令配置
manager.add_command('db', MiagrateCommand)

run.py

from app import app, db
if __name__ == "__main__":
	manager.run()

1.2 迁移

1.2.1 初始化

  • 生成migrations文件
python3 run.py db init
  • 目录结构
|-- app
|   |-- __init__.py
|   |-- __pycache__
|-- migrations
|   |-- README
|   |-- __pycache__
|   |-- alembic.ini
|   |-- env.py
|   |-- script.py.mako
|   `-- versions
`-- run.py

1.2.2 迁移

  • 运行迁移
python3 run.py db migrate

1.2.3 更新

  • 运行更新
python3 run.py db upgrade

2 flask数据库表设计

  • 表默认设为utf8格式
class User(db.Modle):
	__tablename__ = "users"
	__table_args__ = {"mysql_collate":"utf8_general_ci"}
	id = db.Column(db.Integer, primary_key=True)
	name = db.Column(db.String(320), unique=True)
	def __repr__(self):
		return "User's Name:{}".format(self.name)
  • __repr__
In[1]:class User(object):
		def __init__(self, name):
			self.name = name
		def __repr__(self):
			return "User's Name:{}".format(self.name)

结果

In[2]: user = User("xin daqi")
In[3]: user
Out[3]:User's Name:xin daqi
In[4]:print(user)
User's Name:xin daqi
  • __str__
In[1]:class User(object):
		def __init__(self, name):
			self.name = name
		def __str__(self):
			return "User's Name:{}".format(self.name)

结果

In[2]:user = User("xin daqi")
In[3]:user
Out[3]:<__main__.User at 0x7f1b69130be0>
In[4]:print(user)
User's Name:xin daqi
  • 结论
    (1)__repr__str__均用于显示数据;
    (2)__repr__面向程序员,__str__面向用户;

[参考文献]
[1]https://www.cnblogs.com/superxuezhazha/p/5746922.html
[2]https://blog.csdn.net/pugongying1988/article/details/79098351
[3]https://www.centos.bz/2017/08/python-flask-sqlalchemy-table-charset-utf8/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天然玩家

坚持才能做到极致

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值