php的为主语法,SQL生成数据库字典脚本

  开荒一个档期的顺序时都会有三个蛋疼的难题——写数据库供给文档,然后依照那几个文书档案来建数据库,假如后来须求改了,要改数据库还要改文书档案,有时忙着忙着就忘改了,导致文书档案是晚点的。那么大家和睦写个脚本在数据库运转直接生产数据字典,那样只要改数据库就行了。方今在网络搜了下,开采sqlServer唯有二零零五的扭转为工人身份具,未有0八的,存款和储蓄进程倒是有,不过下载运维3次三街六巷是坑,写的也太差了,于是对剧本实行革新。

  开辟3个门类时都会有3个蛋疼的标题——写数据库供给文书档案,然后依据那几个文书档案来建数据库,借使后来供给改了,要改数据库还要改文书档案,有时忙着忙着就忘改了,导致文书档案是晚点的。那么大家和煦写个脚本在数据库运维直接生产数量字典,那样1旦改数据库就行了。方今在互连网搜了下,开采sqlServer唯有2005的更改工具,未有0八的,存款和储蓄进度倒是有,可是下载运转3回大街小巷是坑,写的也太差了,于是对台本进行革新。

Alembic
是用来成功 SQLalchemy
数据表迁移的工具,同时也提供了自动生成迁移的选项来简化职业。不过在和
SQLite
同盟时,由于SQLite并不是支撑具备的SQL命令,所以有局地亟需小心的地点,记在此地。

                                                    php的主干语法

     

     

启用Alembic

具体见文档,首要有以下几步

  1. 初步化情状
  2. 修改ini文件,最珍视的一项是把DB的职责改对。

下一场就能够写migrate脚本了。

一,PHP在Web开拓中的应用

-- =============================================
-- Author:        <marlon>
-- Create date: <2017-11-13>
-- Description:    <生成数据库字典>
-- =============================================

BEGIN
    DECLARE @TableName nvarchar(35),@htmls varchar(8000)
    DECLARE @字段名称 VARCHAR(200)
    DECLARE @类型  VARCHAR(200)
    DECLARE @长度 VARCHAR(200)
    DECLARE @数值精度 VARCHAR(200)
    DECLARE @小数位数 VARCHAR(200)
    DECLARE @默认值 VARCHAR(200)
    DECLARE @允许为空 VARCHAR(200)
    DECLARE @外键 VARCHAR(200)
    DECLARE @主键 VARCHAR(200)
    DECLARE @描述 VARCHAR(200)

    SET NOCOUNT ON;

    DECLARE Tbls CURSOR
    FOR
        Select distinct Table_name
        FROM INFORMATION_SCHEMA.COLUMNS
        order by Table_name
    OPEN Tbls
        PRINT '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
        PRINT '<html xmlns="http://www.w3.org/1999/xhtml">'
        PRINT '    <head>'
        PRINT '        <title>SqlServer数据字典</title>'
        PRINT '        <style type="text/css">'
        PRINT '            body{margin:0; font:11pt "arial", "微软雅黑"; cursor:default;}'
        PRINT '            .titleHead{margin:0 auto;text-align:center;}'
        PRINT '            .tableBox{margin:10px auto; padding:0px; width:1000px; height:auto; background:#FBF5E3; border:1px solid #45360A}'
        PRINT '            .tableBox h3 {font-size:12pt; height:30px; line-height:30px; background:#45360A; padding:0px 0px 0px 15px; color:#FFF; margin:0px; text-align:left }'
        PRINT '            .tableBox table {width:1000px; padding:0px }'
        PRINT '            .tableBox th {height:25px; border-top:1px solid #FFF; border-left:1px solid #FFF; background:#F7EBC8; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
        PRINT '            .tableBox td {height:25px; padding-left:10px; border-top:1px solid #FFF; border-left:1px solid #FFF; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
        PRINT '            .tableBox td {text-align:center}'
        PRINT '        </style>'
        PRINT '    </head>'
        PRINT '    <body>'
        PRINT '       <div class="titleHead">'
        PRINT '          <h1>'+DB_NAME()+'数据字典</h1>'
        PRINT '       </div>'
    FETCH NEXT FROM Tbls INTO @TableName
    WHILE @@FETCH_STATUS = 0
    BEGIN
  set @htmls = ''
        Select  @htmls = '        <h3>' + @TableName + ' : '+ CAST(Value as varchar(1000)) + '</h3>'
        FROM sys.extended_properties AS A
        WHERE A.major_id = OBJECT_ID(@TableName)
        and minor_id = 0

        if @htmls is null or DATALENGTH (@htmls)=0
            begin
            set @htmls = '        <h3>' + @TableName + '</h3>'
            end
        PRINT '        <div class="tableBox">'
        PRINT @htmls
        PRINT '            <table cellspacing="0">'
        PRINT '                <tr>'
        PRINT '                    <th>字段名称</th>'
        PRINT '                    <th>类型</th>'
        PRINT '                    <th>长度</th>'
        PRINT '                    <th>数值精度</th>'
        PRINT '                    <th>小数位数</th>'
        PRINT '                    <th>默认值</th>'
        PRINT '                    <th>是否允许为空</th>'
        PRINT '                    <th>是否外键</th>'
        PRINT '                    <th>是否主键</th>'
        PRINT '                    <th>描述</th>'
        PRINT '                </tr>'

        DECLARE TRows CURSOR
        FOR
            SELECT
            '                    <td>' + CAST(clmns.name AS VARCHAR(35)) + '</td>',
            '                    <td>' + CAST(udt.name AS CHAR(15)) + '</td>' ,
            '                    <td>' + CAST(CAST(CASE WHEN typ.name IN (N'nchar', N'nvarchar') AND clmns.max_length <> -1 THEN clmns.max_length/2 ELSE clmns.max_length END AS INT) AS VARCHAR(20)) + '</td>',
            '                    <td>' + CAST(CAST(clmns.precision AS INT) AS VARCHAR(20)) + '</td>',
            '                    <td>' + CAST(CAST(clmns.scale AS INT) AS VARCHAR(20)) + '</td>',
            '                    <td>' + isnull(CAST(cnstr.definition AS VARCHAR(20)),'') + '</td>',
            '                    <td>' + (case when clmns.is_nullable > 0 then '是' else '否' end) + '</td>' ,
            '                    <td>' + (case when clmns.is_computed > 0 then '是' else '否' end) + '</td>' ,
            '                    <td>' + (case when clmns.is_identity > 0 then '是' else '否' end) + '</td>' ,
            '                    <td>' + ISNULL(CAST(exprop.value AS VARCHAR(500)),'') + '</td>'
            FROM sys.tables AS tbl 
            INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tbl.object_id
            LEFT OUTER JOIN sys.indexes AS idx ON idx.object_id = clmns.object_id AND 1 =idx.is_primary_key
            LEFT OUTER JOIN sys.index_columns AS idxcol ON idxcol.index_id = idx.index_id AND idxcol.column_id = clmns.column_id AND idxcol.object_id = clmns.object_id AND 0 = idxcol.is_included_column
            LEFT OUTER JOIN sys.types AS udt ON udt.user_type_id = clmns.user_type_id
            LEFT OUTER JOIN sys.types AS typ ON typ.user_type_id = clmns.system_type_id AND typ.user_type_id = typ.system_type_id
            LEFT JOIN sys.default_constraints AS cnstr ON cnstr.object_id=clmns.default_object_id
            LEFT OUTER JOIN sys.extended_properties exprop ON exprop.major_id = clmns.object_id AND exprop.minor_id = clmns.column_id AND exprop.name = 'MS_Description'
            WHERE (tbl.name = @TableName) 
            ORDER BY clmns.column_id ASC        
        OPEN TRows
        FETCH NEXT FROM TRows INTO @字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述
        WHILE @@FETCH_STATUS = 0
        BEGIN
            PRINT '                <tr>'
            PRINT @字段名称
            PRINT @类型
            PRINT @长度
            PRINT @数值精度
            PRINT @小数位数
            PRINT @默认值
            PRINT @允许为空
            PRINT @外键
            PRINT @主键
            PRINT @描述
            PRINT '                </tr>'
            FETCH NEXT FROM TRows INTO @字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述
        END
        CLOSE TRows
        DEALLOCATE TRows

        PRINT '            </table>'
        PRINT '        </div>'
    FETCH NEXT FROM Tbls INTO @TableName
    END
        PRINT '    </body>'
        PRINT '</html>'
    CLOSE Tbls
    DEALLOCATE Tbls
END
-- =============================================
-- Author:        <marlon>
-- Create date: <2017-11-13>
-- Description:    <生成数据库字典>
-- =============================================

BEGIN
    DECLARE @TableName nvarchar(35),@htmls varchar(8000)
    DECLARE @字段名称 VARCHAR(200)
    DECLARE @类型  VARCHAR(200)
    DECLARE @长度 VARCHAR(200)
    DECLARE @数值精度 VARCHAR(200)
    DECLARE @小数位数 VARCHAR(200)
    DECLARE @默认值 VARCHAR(200)
    DECLARE @允许为空 VARCHAR(200)
    DECLARE @外键 VARCHAR(200)
    DECLARE @主键 VARCHAR(200)
    DECLARE @描述 VARCHAR(200)

    SET NOCOUNT ON;

    DECLARE Tbls CURSOR
    FOR
        Select distinct Table_name
        FROM INFORMATION_SCHEMA.COLUMNS
        order by Table_name
    OPEN Tbls
        PRINT '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">'
        PRINT '<html xmlns="http://www.w3.org/1999/xhtml">'
        PRINT '    <head>'
        PRINT '        <title>SqlServer数据字典</title>'
        PRINT '        <style type="text/css">'
        PRINT '            body{margin:0; font:11pt "arial", "微软雅黑"; cursor:default;}'
        PRINT '            .titleHead{margin:0 auto;text-align:center;}'
        PRINT '            .tableBox{margin:10px auto; padding:0px; width:1000px; height:auto; background:#FBF5E3; border:1px solid #45360A}'
        PRINT '            .tableBox h3 {font-size:12pt; height:30px; line-height:30px; background:#45360A; padding:0px 0px 0px 15px; color:#FFF; margin:0px; text-align:left }'
        PRINT '            .tableBox table {width:1000px; padding:0px }'
        PRINT '            .tableBox th {height:25px; border-top:1px solid #FFF; border-left:1px solid #FFF; background:#F7EBC8; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
        PRINT '            .tableBox td {height:25px; padding-left:10px; border-top:1px solid #FFF; border-left:1px solid #FFF; border-right:1px solid #E0C889; border-bottom:1px solid #E0C889 }'
        PRINT '            .tableBox td {text-align:center}'
        PRINT '        </style>'
        PRINT '    </head>'
        PRINT '    <body>'
        PRINT '       <div class="titleHead">'
        PRINT '          <h1>'+DB_NAME()+'数据字典</h1>'
        PRINT '       </div>'
    FETCH NEXT FROM Tbls INTO @TableName
    WHILE @@FETCH_STATUS = 0
    BEGIN
        set @htmls = ''
        Select  @htmls = '        <h3>' + @TableName + ' : '+ CAST(Value as varchar(1000)) + '</h3>'
        FROM sys.extended_properties AS A
        WHERE A.major_id = OBJECT_ID(@TableName)
        and minor_id = 0

        if @htmls is null or DATALENGTH (@htmls)=0
            begin
            set @htmls = '        <h3>' + @TableName + '</h3>'
            end
        PRINT '        <div class="tableBox">'
        PRINT @htmls
        PRINT '            <table cellspacing="0">'
        PRINT '                <tr>'
        PRINT '                    <th>字段名称</th>'
        PRINT '                    <th>类型</th>'
        PRINT '                    <th>长度</th>'
        PRINT '                    <th>数值精度</th>'
        PRINT '                    <th>小数位数</th>'
        PRINT '                    <th>默认值</th>'
        PRINT '                    <th>是否允许为空</th>'
        PRINT '                    <th>是否外键</th>'
        PRINT '                    <th>是否主键</th>'
        PRINT '                    <th>描述</th>'
        PRINT '                </tr>'

        DECLARE TRows CURSOR
        FOR
            SELECT
            '                    <td>' + CAST(clmns.name AS VARCHAR(35)) + '</td>',
            '                    <td>' + CAST(udt.name AS CHAR(15)) + '</td>' ,
            '                    <td>' + CAST(CAST(CASE WHEN typ.name IN (N'nchar', N'nvarchar') AND clmns.max_length <> -1 THEN clmns.max_length/2 ELSE clmns.max_length END AS INT) AS VARCHAR(20)) + '</td>',
            '                    <td>' + CAST(CAST(clmns.precision AS INT) AS VARCHAR(20)) + '</td>',
            '                    <td>' + CAST(CAST(clmns.scale AS INT) AS VARCHAR(20)) + '</td>',
            '                    <td>' + isnull(CAST(cnstr.definition AS VARCHAR(20)),'') + '</td>',
            '                    <td>' + (case when clmns.is_nullable > 0 then '是' else '否' end) + '</td>' ,
            '                    <td>' + (case when clmns.is_computed > 0 then '是' else '否' end) + '</td>' ,
            '                    <td>' + (case when clmns.is_identity > 0 then '是' else '否' end) + '</td>' ,
            '                    <td>' + ISNULL(CAST(exprop.value AS VARCHAR(500)),'') + '</td>'
            FROM sys.tables AS tbl 
            INNER JOIN sys.all_columns AS clmns ON clmns.object_id=tbl.object_id
            LEFT OUTER JOIN sys.indexes AS idx ON idx.object_id = clmns.object_id AND 1 =idx.is_primary_key
            LEFT OUTER JOIN sys.index_columns AS idxcol ON idxcol.index_id = idx.index_id AND idxcol.column_id = clmns.column_id AND idxcol.object_id = clmns.object_id AND 0 = idxcol.is_included_column
            LEFT OUTER JOIN sys.types AS udt ON udt.user_type_id = clmns.user_type_id
            LEFT OUTER JOIN sys.types AS typ ON typ.user_type_id = clmns.system_type_id AND typ.user_type_id = typ.system_type_id
            LEFT JOIN sys.default_constraints AS cnstr ON cnstr.object_id=clmns.default_object_id
            LEFT OUTER JOIN sys.extended_properties exprop ON exprop.major_id = clmns.object_id AND exprop.minor_id = clmns.column_id AND exprop.name = 'MS_Description'
            WHERE (tbl.name = @TableName) 
            ORDER BY clmns.column_id ASC        
        OPEN TRows
        FETCH NEXT FROM TRows INTO @字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述
        WHILE @@FETCH_STATUS = 0
        BEGIN
            PRINT '                <tr>'
            PRINT @字段名称
            PRINT @类型
            PRINT @长度
            PRINT @数值精度
            PRINT @小数位数
            PRINT @默认值
            PRINT @允许为空
            PRINT @外键
            PRINT @主键
            PRINT @描述
            PRINT '                </tr>'
            FETCH NEXT FROM TRows INTO @字段名称,@类型,@长度,@数值精度,@小数位数,@默认值,@允许为空,@外键,@主键,@描述
        END
        CLOSE TRows
        DEALLOCATE TRows

        PRINT '            </table>'
        PRINT '        </div>'
    FETCH NEXT FROM Tbls INTO @TableName
    END
        PRINT '    </body>'
        PRINT '</html>'
    CLOSE Tbls
    DEALLOCATE Tbls
END

启用 AutoGenerate

上边教程页面中的Migration需求团结写,不过Alembic还提供了自动生成Migration的选项,首先上文档。

要是必要支持auto,必要做上面包车型客车几件业务:

  1. alembic/env.py 中找target_metadata,暗中同意生成的是如此:

# add your model's MetaData object here
# for 'autogenerate' support
# from myapp import mymodel
# target_metadata = mymodel.Base.metadata
target_metadata = None

看注释,假如须求帮衬autogenerate,把代码改成注释中的样子。注意,要是Base不是投身根目录下,而是在子目录中的,像自家那几个的组织:

.
├── README.md
├── alembic
│   ├── README
│   ├── env.py
│   ├── script.py.mako
│   └── versions
│       └── XXXXXXXX_foobar.py
├── alembic.ini
├── db
│   └── foobar.db
├── foo.py
├── main.py
├── models
│   ├── __init__.py
│   ├── base.py
│   └── foobar.py
└── requirements.txt

则须求在导入Base前拉长那两句:

import os, sys
sys.path.append(os.getcwd())

php的为主语法,SQL生成数据库字典脚本。要不报找不到的错,嗯。

  1. 改Model
  2. 运行 alembic revision --autogenerate -m "blah blah blah ..."

在运转成功后,会在versions目录下生成贰个新的migration,全数自动生成的言语都会放在注释中间方便review。

997755.com澳门葡京 1

  注意事项:

  注意事项:

和SQLite一起用

鉴于SQLite支持的SQL命令不全,所以某些命令,如ALTER TABLE等等的不可能用。辛亏Alembic在本子0.7.0后,增加了batch的选项,它会凭借新的Model制造1个Schema,然后把老的数额移过来。具体的做法便是在
alembic/env.py 的函数 run_migrations_online 函数中,找到
context.configure() 函数,在在那之中参与 render_as_batch=True
选项就能够。然而在github上看到3个越来越灵活的格局:

        context.configure(
            connection=connection,
            target_metadata=target_metadata,
            render_as_batch=config.get_main_option('sqlalchemy.url').startswith('sqlite:///'),
        )

诸如此类只在sqlite数据库的时候会用batch,别的就不会了。


目前就这一个,反正只是保障能用了,也没管后边的规律,回头有需要的话再深挖吧。

在我们采纳php的脚本语言时,大家会在浏览器中对数码举办增加和删除改查,编写的php会首先在劳务器端解析,在由服务器发送音讯到我们的浏览器。和html差别的是,html的言语不会透过服务器,而是一直推行在浏览器中,不过,php会首先在服务器中分析,然后由服务器再次回到新闻到浏览器中。

  1、以上脚本直接在SQL SE福特ExplorerVE普拉多运行,以文本格式展现,设置如下:

  壹、以上脚本直接在SQL SE揽胜极光VECR-V运维,以文本格式展现,设置如下:

php是动态的脚本语言,是编辑网址不错的挑选。

  997755.com澳门葡京 2

  997755.com澳门葡京 3

php的精锐之处在于,一,能募集表单传过来的数目,接受get或许post传过来的数码。

  红框的并非勾选

  红框的绝不勾选

997755.com澳门葡京,贰,能够动态的生成网页,php主假诺依附数据库中生出的数额,来动态的显示数据。

     2、倘诺要加注释,表的笺注在此地加

     2、假如要加注释,表的笺注在这边加

三,能很好的管理字符串。

997755.com澳门葡京 4

997755.com澳门葡京 5

四,协助绝大许多的数据库,包含mysql,db贰,oracle,等。

 字段的表明:

 字段的注释:

5,会话追踪机制,在http的连天上,一个对话就是2个响应,从此时此刻的连日跳转到其它二个链接,就代表最近的对话消失,不过足以采纳php很好的调节会话。

997755.com澳门葡京 6

997755.com澳门葡京 7

6,帮忙大气的互联网协议,包罗http,tcpip等协商。

 3、生成后保存为HTML文件就可以

 三、生成后保存为HTML文件就可以

贰,第一个php脚本程序。

 

 

在PHP文件中可以编写HTML、CSS、JavaScript等语言,但利用早先标识<?php和停止标识?>此前的代码用PHP应用服务器解析,将分析后的代码发到客户浏览器,在这么些标识那外的都直接发送给客户端,客户端再用浏览器解析

意义呈现:

成效突显:

      <?php

  997755.com澳门葡京 8

  997755.com澳门葡京 9

echo “Hello World”;

 

 

?>

三,php语言标识

p      <?php  ?>        推荐使用那一个

n 假设?>之后正是脚本停止能够不加,提出并非加

p <?  ?>

p <?=$var ?>

p <% %>

p <script language=“php”> </script>

四,程序中的注释

p        // 单行注释

p /*  */ 多行注释,中无法再包涵多行注释

p #本子注释

p /**  */  文书档案注释

p 一.写过不伏贴的代码注释

p 二.写帮忙文书档案

p 三.调节和测试程序

p 注意: 注释要写在代码的方面或是左侧

版权注解:本文为博主原创小说,未经博主允许不得转发。


相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*
*
Website