查- 问题集

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43650411/article/details/102513690

1.DOS命令查看;
xp及win7下可点击电脑左下角,开始图标,点击搜索框或点击运行;或按着电脑win键+r键可打开运行输入框,输入“cmd”命令,如图所示;
在弹出的窗口输入命令:“ipconfig/all”,然后按下回车即可。

2.删除表单后,所依赖的触发器同步删除;不能在使用触发器自动创建新的触发器

-- test 1
-- tgr 删除表单后,所依赖的触发器同步删除   ---- Yes
IF (OBJECT_ID('tgr_tt', 'TR') IS NOT NULL)
	DROP TRIGGER tgr_tt
GO
CREATE TRIGGER tgr_tt
ON Actions
	AFTER insert,update,delete
AS
BEGIN
	SELECT 1 AS 'tgr_tt_1'
END
-- test2
-- tgr 自动创建触发器 -- 不存在   ----- No
IF (OBJECT_ID('tgr_tt_insteadOf', 'TR') IS NOT NULL)
	DROP TRIGGER tgr_tt_insteadOf
GO
CREATE TRIGGER tgr_tt_insteadOf
ON Actions
	after insert
AS
	CREATE TRIGGER tgr_tt
	ON Actions
		AFTER insert,update,delete
	AS
		BEGIN
			SELECT 1 AS 'tgr_tt_1'
		END
GO

3.py + sql

  • drop_duplicates的参数subset可以为单列或多列
  • python中的NaT与SQL中的NULL不能自由转换,使用isinstance + pd.NaT判定后手动转换
  • sql中与python单双引号可以嵌套不一样,sql中遇到单引号中包含单引号直接使用两个单引号
@cost_time
def update_basicInfo():
    '基本信息更新'
    lis1 = ['URL', '缴费到期日', 'channel', '网站名称', 
            '主体到期日', '状态', '开户日']
    # 3.0 筛选,仅对lis1中在icrm发生了更新了的账户
    # 3.1 筛选前更新全部数据  筛选后预估<<1000
    # 3.2 --重新从数据库中读取数据,并以更新列完全去重; --后以用户名保留首位去重
    #
    df_db = df('basicInfo_20191015t')
    df1 = df_b.append(df_db, sort=False)
    df1.drop_duplicates(lis1, keep=False, inplace=True)
    df1.drop_duplicates('用户名', keep='first', inplace=True)
    # 开始更新
    try:
        for n, i in enumerate(df1[lis1].values):
            sql_ = ''' UPDATE basicInfo_20191015t
                SET URL='{}', 加V缴费到期日='{}', 端口='{}', 网站名称='{}', 主体资质到期日='{}', 今日账户状态='{}', 开户日期='{}' 
                WHERE Id={}
                '''
            # 1. py中NaT & sql中NULL不兼容
            if isinstance(i[1], type(pd.NaT)):
                i[1] = 'NULL'
                sql_ = sql_.replace("加V缴费到期日='{}'", "加V缴费到期日={}")
            if isinstance(i[4], type(pd.NaT)):
                i[4] = 'NULL'
                sql_ = sql_.replace("主体资质到期日='{}'", "主体资质到期日={}")
            if isinstance(i[6], type(pd.NaT)):
                i[6] = 'NULL'
                sql_ = sql_.replace("开户日期='{}'", "开户日期={}")
            # 2.0. py中,可以使用双引号"&单引号'之间的嵌套
            # 2.1. sql中,'一般均用两个''替代
            #
            if isinstance(i[3], str) and "'" in i[3]:
                    i[3] = i[3].replace("'", "''")
            sql = sql_.format(i[0], i[1], i[2], i[3], i[4], i[5], i[6], str(n))
            engine.execute(sql)
    except Exception as e:
        print(e)
    else:
    	print('更新正常')

猜你喜欢

转载自blog.csdn.net/weixin_43650411/article/details/102513690