johnnierunner是活动记录模式o/r映射器的sqlalchemy包装器
JohnnieRunner的Python项目详细描述
johnnierunner是活动记录模式o/r映射器的sqlalchemy包装器
依赖关系
- python2.7或更高版本
- sqlalchemy>;=1.0.8
- mysql python>;=1.2.5
支持RDBMS
- mysql
目标
- 添加类似activerecord api的rails
- 数据库迁移
- sqlalchemy rdbms的所有支持
用法
准备
生成测试数据库
$ mysql -u root -p mysql> create database johnnie; Query OK, 1 row affected (0.01 sec) mysql> exit; Bye
定义o/r映射器结构
fromjohnnieimportAbstractModel,create_sessionfromjohnnie.typesimportColumn,String,Integersession=create_session('localhost','root','root user password','johnnie')classRepositories(AbstractModel):classMeta:session=sessionid=Column('id',Integer(unsigned=True),primary_key=True)name=Column('name',String(255),nullable=False)author=Column('author',String(255),nullable=False)url=Column('url',String(255),nullable=False)
创建模型表
$ python >>> from hoge import Repositories >>> Repositories.metadata.create_all(Repositories.get_session_engine()) >>> exit()
示例
创建实体
>>> from hoge import Repositories >>> entity= Repositories(name="JohnnieRunner", author="teitei-tk", url="https://github.com/teitei-tk/JohnnieRunner") or >>> entity_data={"name": "JohnnieRunner", "author": "teitei-tk", "url": "https://github.com/teitei-tk/JohnnieRunner"} >>> entity= Repositories.new(entity_data)
创建记录
>>> entity.save() True
mysql>select*fromrepositories;+----+---------------+-----------+--------------------------------------------+ |id|name|author|url|+----+---------------+-----------+--------------------------------------------+ |1|JohnnieRunner|teitei-tk|https://github.com/teitei-tk/JohnnieRunner|+----+---------------+-----------+--------------------------------------------+ 1rowinset(0.00sec)mysql>
读取记录
>>> entity= Repositories.get(1) or >>> entity= Repositories.find(1) >>> entity.name u"JohnnieRunner" >>> entity.author u"teitei-tk" >>> entity.url u"https://github.com/teitei-tk/JohnnieRunner"
更新记录
>>> entity.name = u"update_test" >>> entity.save() True
mysql>select*fromrepositories;+----+-------------+-----------+--------------------------------------------+ |id|name|author|url|+----+-------------+-----------+--------------------------------------------+ |1|update_test|teitei-tk|https://github.com/teitei-tk/JohnnieRunner|+----+-------------+-----------+--------------------------------------------+ mysql>
删除记录
>>> entity.delete() True
mysql>select*fromrepositories;Emptyset(0.00sec)
待办事项
- []添加数据库数据类型
- []轻松生成表索引
- []简单的表关系
- []数据库迁移
- []RDBMS支持MySQL以外的其他功能
许可证
- 麻省理工学院