自主学习 之 python-sqlAlchemy数据库

设置唯一约束

设置单一约束

设置联合唯一约束

方法一:多个字段定义唯一

fileName=db.Column(db.Text(),unique=True)
className=db.Column(db.Text(),unique=True)
funName=db.Column(db.Text(),unique=True)

方法二:UniqueConstraint

UniqueConstraint('fileName', 'className','funName',name='unique_testPlan')

查询

模块语法><(大于和小于)查询and_和or_查询
filter_by()直接用属性名,比较用=不支持不支持
filter()用类名.属性名,比较用==支持支持
方法说明举例
=filter_by全匹配User.query.filter_by(name=‘A’)
and_User.query.filter(and_(User.className==‘classname1’,User.funName==‘funname1’))
or_User.query.filter(or_(User.className==‘classname1’,funName==‘funname1’))
in_查询属于某些值的数据User.query.filter(User.name.in_(‘classname1’,’‘classname2’,‘classname4’))
notin_查询不属于某些值的数据User.query.filter(User.name.notin_(‘classname1’,’‘classname2’,‘classname4’))
match_匹配User.query.filter(User.name.match(‘classname1’))
like模糊查询User.query.filter(User.name.like(’%classname%’))

数据库迁移

使用Flask-Migrate实现

第一步设置应用实例

进入应用工作目录,并设置应用实例
set FLASK_APP=flasky.py

D:\flask>set FLASK_APP=flasky.py

第二步创建迁移仓库

创建迁移仓库 flask db init

D:\flask>flask db init
Creating directory D:\flask\migrations ...  done
Creating directory D:\flask\migrations\versions ...  done
Generating D:\flask\migrations\alembic.ini ...  done
Generating D:\flask\migrations\env.py ...  done
Generating D:\flask\migrations\README ...  done
Generating D:\flask\migrations\script.py.mako ...  done
Please edit configuration/connection/logging settings in 'D:\\flask\\migrations\\alembic.ini' before proceeding.

第三步创建迁移脚本

创建迁移脚本
flask db migrate -m "initial migration"

D:\flask>flask db migrate -m "initial migration"
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added column 'users.about_me'
INFO  [alembic.autogenerate.compare] Detected added column 'users.last_seen'
INFO  [alembic.autogenerate.compare] Detected added column 'users.member_since'
INFO  [alembic.autogenerate.compare] Detected added column 'users.name'
Generating D:\flask\migrations\versions\18a6d3efca46_initial_migration.py ...  done

此时可应用中可看到如下文件:
迁移仓库文件--sucherly

第四步更新数据库

更新数据库

D:\flask>flask db upgrade
INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> 18a6d3efca46, initial migration

手动删除migrations后不生成迁移脚本的处理

问题:手动删除了migrations目录后,修改model,再迁移时,不会报错,却不生成迁移脚本。


原因:数据库中有自动生成的一张表alembic_version,此表中记录了版本信息。


处理:清空表alembic_version中的数据,然后再执行迁移即可。(sqlite删除表数据的详细步骤见下方)

sqllite安装

没有原由,选择了它。在命令窗口操作还是蛮方便的。
见如下链接:sqlite中文网-安装

打开已存在的sqlite文件
>sqlite3
>.open 'D:\flask\data-dev.sqlite'
查询表
>select * from alembic_version;
955ed4d0e230
清空表数据
> delete from alembic_version;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值