安装用到的包
pip install pymysql
pip install sqlalchemy
pip install alembic
alembic和git类似,是一个版本控制的东西,执行它的命令,前面必须加alembic
写一个py文件,创建一个表
from sqlalchemy import Column, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
# 连接数据库
engine = create_engine('mysql+pymysql://root:7890@127.0.0.1:3306/p2p')
Base = declarative_base()
class My_Table(Base):
# 表名
__tablename__ = 'RRDXinPlanList'
# 字段
id = Column(String(20), primary_key=True)
amount = Column(String(20))
earnInterest = Column(String(20))
expectedYearRate = Column(String(20))
fundsUseRate = Column(String(20))
planId = Column(String(20))
name = Column(String(20))
status = Column(String(20))
subpointCountActual = Column(String(20))
PlanList.metadata.create_all(engine)
DBSession = sessionmaker(bind=engine)
以上代码执行后,就会创建数据表,接下来,我在逐行讲解一下具体的内容分别是什么,首先是引入了sessionmaker,Session的主要目的是建立与数据库的会话,它维护你加载和关联的所有数据库对象。它是数据库查询(Query)的一个入口。
在Sqlalchemy中,数据库的查询操作是通过Query对象来实现的。而Session提供了创建Query对象的接口
在我们创建了My_Table这个类以后,我们使用了 .metadata.create_all()这个方法,并将engine作为参数传入(engine是连接数据库的方法),你也可以直接使用父类Base的方式将多个表同时创建,例如Base.metadata.create_all(engine) 。
接下来在来说My_Table 里面的内容,自己创建类继承自declarative_base()。在创建的时候,我们会默认给类加一个表名。(__tablename__)
alembic 初始化和配置
完成 pip 安装之后
-
在 shell 里面 cd 到项目根目录执行
alembic init alembic
-
用 pycharm 把生成的文件 download 回来(包括
alembic
目录和alembic.ini
) -
修改
alembic.ini
设置数据库连接。
sqlalchemy.url = driver://user:pass@localhost/dbname
-
在
env.py
中设置,将target_metadata赋值成数据库的元数据(metadata)
如果执行 revision 有 import 报错,注意是否正确将当前项目目录添加到 sys.path 路径
# 修改:
target_metadata=None
# 修改为:
# 方式1:
import os
import sys
root = os.path.dirname(__file__)+'/../../' # 定位到project根目录
print root
sys.path.append(root)
from myapp import db
target_metadata = db.metadata
# 方式2:
import sys
from os.path import abspath, dirname
sys.path.append(dirname(dirname(abspath(__file__))))
from modules.models import Base
target_metadata = Base.metadata
基于数据库 model 定义进行更新
将 model 定义好,并确认在 env.py 里导入的 Base 类是在 model 定义的地方的
-
配置完成执行( -m “注释信息”,根据情况更改,会用到生成的py文件名字里)
alembic revision -m “create_user_table”
这里可以看到虚拟机目录在 alembic/versions 里生成了 py 文件,检查确认更新的内容,然后执行
alembic upgrade head
这样就会更新 mysql 数据库了