SqlAlchemyTools提供与FlaskSqlAlchemy&FlaskMigrate相似的功能,而不依赖于Flask。

SqlAlchemy-Tools的Python项目详细描述


SqlAlchemyTools公司

SqlAlchemyTools提供与Flask类似的功能SqlAlchemy&Flask Migrate,而不依赖于Flask。在

安装

使用pip安装SqlAlchemyTools:

pip install sqlalchemy-tools

特点

  • 数据库:
    • 只要用Database()实例化,SqlAlchemyTools就会自动创建会话、模型和SQLAlchemy所需的一切。在
    • 与Flask应用程序配合使用,代码更改最小
    • 线程安全使用^{}
    • 与Pandas集成,允许快速插入数据帧并作为数据帧检索查询
    • 它提供了query()、create()、update()、delete()等简单的方法来分别选择、创建、更新、删除条目。在
    • 自动生成__tablename__作为模型名上的snake case等价物,如果没有明确定义(不是多元化的)
    • 它使用箭头表示日期时间
    • 日期时间以UTC格式保存,并使用SQLAlchemy实用工具中的ArrowType
    • 整个JSONType,添加了一些类型的JSONType和sqltype
    • 在数据库->;为您提供UTC类型的箭头
    • 分页结果
    • 漂亮的对象表示
    • 它仍然是sql炼金术。您可以访问所有的SQLAlchemy awesomeness
  • 迁移:
    • 内置迁移支持类似于烧瓶迁移
    • 创建一个manage.py文件,以便轻松地迁移数据库
  • 模型来源:
    • 快速将模型的所有字段添加到WTF表单
    • 支持includeexcludeonly

目录

快速概述:

数据库

创建模型

^{pr2}$

检索所有记录

User.query.all()

创建新记录

user=User.create(name="Mardix",location="Moon")# oruser=User(name="Mardix",location="Moon").save()

按主键(id)获取记录

user=User.get(1234)

从主键更新记录

user=User.get(1234)ifuser:user.update(location="Neptune")

从查询迭代更新记录

foruserinUser.query:user.update(last_access=db.utcnow())

删除记录

user=User.get(1234)ifuser:user.delete()

使用筛选器查询

all=User.query.filter(User.location=="USA")foruserinusers:...

迁移

SqlAlchemyTools使用Alembic处理SQLAlchemy数据库迁移。数据库操作通过命令行界面可用。在

为什么直接使用SqlAlchemyTools迁移而不是Alembic

SqlAlchemyTools以正确的方式配置Alembic,以便使用数据库,无论它是否带有Flask。就实际的数据库迁移而言,一切都由Alembic处理,因此您可以获得完全相同的功能。在

创建manage.py

为了支持数据库迁移,您需要创建一个manage.py文件。在

The file can be called anything

fromsqlalchemy_tools.migrationimportMigrate,migrate_managerfromsqlalchemy_toolsimportDatabase# create/import your databasedb=Database('sqlite:///tmp.db')# create a `migrate` object that is linked to your databasemigrate=Migrate(db)classUser(db.Model):id=db.Column(db.Integer,primary_key=True)name=db.Column(db.String(128))surname=db.Column(db.String(128))if__name__=='__main__':migrate_manager.main()

初始化迁移文件夹

需要初始化migrations文件夹,该文件夹将包含您的数据库版本:

python manage.py init

创建新迁移

无论何时需要在数据库中反映对模型的更改:

python manage.py migrate -m "Intial migration"

升级数据库

要将数据库升级到最新的迁移:

python manage.py upgrade

降级数据库

要将数据库降级1次,请执行以下操作:

python manage.py downgrade

帮助

要查看所有可用的命令,请运行:

python manage.py --help

模型

制作一个与烧瓶兼容的WTForms-Alchemy模型

fromsqlalchemy_toolsimportcreate_model_formfromsqlalchemy_toolsimportDatabase# create/import your databasedb=Database('sqlite:///tmp.db')ModelForm=create_model_form(db)classUserForm(ModelForm):classMeta:model=Userexclude=['last_access']

如何使用

不同模块的完整指南如下:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java JNI和取消异步任务   java整数n作为List<String>的第二个参数传递。子列表(fromIndex,toIndex),但是stacktrace说toIndex在Kotlin中是n+2   如何在Java中正确嵌套多个ArrayList/Maps?   在嵌套条件语句中比较数组中的值时,java List没有打印正确的值   从CRON作业运行java代码   JRE使用jvisualvm检测到java致命错误   java将字符添加到BufferedReader中   带有枚举的java单例与带有双重检查锁定的单例   Java中的编译器构造基类的更改会影响子类的字节码吗?   Java作为Windows服务用户数据路径   java clone():ArrayList。克隆人()我认为它是一个肤浅的复制品   在jfilechooser多文件选择器启用中打开对话框后,java文件将显示所选文件   java在常用的操作方法中使用反射可以吗?   java ReloadableResourceBundleMessageSource。getMessage()不使用我给它的参数