用于分析SQL数据库中依赖项的工具包。

sqldd的Python项目详细描述


SQL数据依赖工具

sql数据依赖工具(sqldd)是一个tookit,用于分析数据库中行之间的依赖关系。给定一个表和一个主键,它递归地分析外键,以生成初始“根行”所依赖的所有下游表和外键的映射。

状态

https://travis-ci.org/rkeilty/sql-data-dependency.svg?branch=master

安装

sqldd模块是published on the Python Package Index,因此您可以 使用pipeasy_install安装它。

pip install sqldd

或:

easy_install sqldd

它在路径中安装一个sqldd模块,以便简单地使用shell。

用法

这个工具最常用的用法是从带有sqldd的shell中获取。

例如,要查找表A中第53行的依赖项:

$: sqldd A 53 --database sqldd_db --pretty
   {
       "A": [
           53
       ],
       "D': [
           1,
           2,
           20
       ],
       "M': [
           48
       ]
   }

这表示在该行的完整依赖关系树中,表DM具有与外键相关的行。这可能不是A的直接子依赖项,但可能是子依赖项(A:53 --> D:1 --> M:48

多行

对于更复杂的分析(其中可能需要查看多个表/行),可以使用表名作为键指定json文件,而值是主键数组。

{
    "A": [53],
    "another_table": [1, 4, 10],
    "one_more_table": ["string_pk_1", "string_pk_2"]
}

现在调用将提供更多输出:

$: sqldd --json input.json --database sqldd_db --pretty
   {
       "A": [53],
       "D": [1, 2, 20],
       "M": [48],
       "P": [800, 908],
       "another_table": [1, 4, 10, 22, 28],
       "one_more_table": ["string_pk_1", "string_pk_2", "string_pk_4444"]
   }

Docker

该工具的Docker图像也可用。使用docker run调用它的方式与pip命令相同。

$: docker run --rm rkeilty/sqldd A 53 --database my_db --pretty
   {
       "A": [
           53
       ],
       "D': [
           1,
           2,
           20
       ],
       "M': [
           48
       ]
   }

选项

usage: sqldd [-h] [--json JSON_FILE] [--server SERVER] [--port PORT]
             --database DATABASE [--username USERNAME] [--password PASSWORD]
             [--pretty] [--sqldump] [--sqldump_table_defs]
             [table] [primary_key]

SQL Data Dependency Tool

One of either ([table][primary_key]) or [--json] is required.

positional arguments:
  table                 Table to analyze
  primary_key           Primary key for row in table to analyze

optional arguments:
  -h, --help            show this help message and exit
  --json JSON_FILE      File containing tables and rows to analyze
  --server SERVER       Database server
  --port PORT           Database port
  --database DATABASE   Database name
  --username USERNAME   Database username
  --password PASSWORD   Database password
  --pretty              Pretty print the output
  --sqldump             Generate a sql dump file of all dependencies
  --sqldump_table_defs  Dump _all_ table defs, even those without
                        dependencies. Useful for constructing skeleton DBs.

待办事项

  • 允许从根行向上遍历,而不仅仅是下游依赖项。
  • 不支持复合主键。
  • 仅限于mysql,请展开连接字符串以允许anysql兼容的数据库访问。

许可证

sqldd根据3子句bsd许可的条款获得许可。

贡献

欢迎所有投稿,包括但不限于:

  • 文档修复/更新
  • 新功能(请求和实现)
  • 错误修复(请参阅问题列表)

如果在代码中遇到任何错误,请在github上提交问题: https://github.com/rkeilty/sql-data-dependency/issues

作者

版本

  • 版本:1.0.0
  • 发布日期:2017-02-07

修订历史

版本1.0.0

  • 发布日期:2017-02-07
  • 更改:
    • python 2/3可移植性
    • 停靠命令
    • 基本测试
    • 简化的外壳连接

版本0.9.2

  • 发布日期:2017-02-03
  • 更改:
    • 允许旧的sqlalchemy用法

版本0.9.1

  • 发布日期:2017-01-28
  • 更改:
    • 修复mysqldump命令检查
    • 文档更新

版本0.9.0

  • 发布日期:2017-01-27
  • 更改:
    • 初始版本

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

推荐PyPI第三方库


热门话题
如何在Java中创建固定大小的泛型数组?   javascript Paypal Braintree订阅付款   使用BufferedReader和PrintWriter实现java数据持久化?   类似于iCloud的java唯一google id   java使用网格布局和抓取组合框   java我的while循环无限运行,当我检查它时,它说while循环没有主体,而我认为它显然没有主体   java LWJGL碰撞3D OpenGL   java将Tibco RV切换到WebSphere MQ?   java如何使用Postman从curl发布REST   java是超级的,在通用通配符中是独占的吗?   在swing 1.5中,java在指定时间后自动关闭非模态对话框   java PrimeFaces饼图在JSF 2.0中不显示   java如何在Spring MVC中提供带有xml配置的默认bean实现?   java在eclipse中使用按钮关闭JFrame   java Sqoop jar已弃用   Java中的Getter方法