pip install pymysql
pip install sqlalchemy
pip install alembic
1.connect db_config.py
#coding=utf-8 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker # 连接数据库的数据 HOSTNAME = '127.0.0.1' PORT = '3306' DATABASE = 'tornado1' USERNAME = 'admin' PASSWORD = 'Root110qwe' # DB_URI的格式:dialect(mysql/sqlite)+driver://username:password@host:port/database?charset=utf8 DB_URI = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE ) # 1、创建一个engine引擎 engine = create_engine(DB_URI, echo=False ) # 2、sessionmaker生成一个session会话类 Session = sessionmaker(bind=engine) # 3、创建一个session会话实例 dbSession = Session() # 4、创建一个模型基类 Base = declarative_base(engine)
2.建立模型
from sqlalchemy import Column, Integer, String, DateTime from libs.db.db_config import Base class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True, autoincrement=True) name = Column(String(50), unique=True, nullable=False) password = Column(String(50), nullable=False) def __repr__(self): return '<User #{}: {}>'.format(self.id, self.name)
3.alembic的使用 参考资料:https://segmentfault.com/a/1190000014643385
在项目主目录下执行命令:初始化 alemibic init name
需要修改alembic.ini 文件 line 38
# sqlalchemy.url = driver://user:pass@localhost/dbname
sqlalchemy.url = mysql+pymysql://root:password@localhost:3306/tornado_db1
需要修改env.py文件 line 20
sys.path.append(os.getcwd())
from models.auth.model import Base # note: 该Base必须从表model中导入,而不能从之外的地方导入(会找不到表,迁移为空)
target_metadata = Base.metadata
再执行命令:记录版本 alembic revision --autogenerate -m "add user model"
更新数据到数据库:alembic upgrade head
另外版本管理:
alembic history 查看版本
alembic downgrade -n 回退n个版本
alembic upgrade +n 前进n个版本