dbconfigDal.py 文件源码

python
阅读 26 收藏 0 点赞 0 评论 0

项目:wizard 作者: honor100 项目源码 文件源码
def fetch_mysql_metadata(cluster):
    cluster_name = cluster.cluster_name
    cluster_port = cluster.cluster_port
    # ????????????????????????
    dictSlaveConn = getSlaveConnStr(cluster_name)
    if dictSlaveConn:
        dictConn = dictSlaveConn
    else:
        dictConn = getMasterConnStr(cluster_name)
    Host = dictConn['Host']
    Port = dictConn['Port']
    User = dictConn['User']
    Password = dictConn['Password']
    # ?????????
    sqlContent = "select table_schema,table_name,table_type,engine,row_format,table_rows,avg_row_length," \
                 "data_length,max_data_length,index_length,data_free,auto_increment,create_time,table_collation," \
                 "create_options,table_comment from tables where table_schema not in {}".format(
        ('mysql', 'sys', 'mondmm', 'test', 'information_schema', 'performance_schema'), )
    cluster_db = "information_schema"
    try:
        _, results = mdb_query(sqlContent, Host, Port, User, Password, cluster_db, True)
    except Exception as e:
        print("Mysql Error : %s" % e)
        return None
    # ??????????
    for result in results:
        table_schema = result.get('table_schema')
        table_name = result.get('table_name')
        _, res = mdb_query("show create table {}".format(table_name), Host, Port, User, Password, table_schema)
        create_statement = pymysql.escape_string(res[0][1])
        result['create_statement'] = create_statement
        # ?????,????????????????.   (cluster_port, table_schema, table_name??????unique??)
        metadatas = mysql_cluster_metadata.objects.filter(
            Q(cluster_port=cluster_port) & Q(table_schema=table_schema) & Q(table_name=table_name))
        if metadatas:
            metadata = metadatas[0]
        else:
            metadata = mysql_cluster_metadata()
        metadata.cluster_name = cluster_name
        metadata.cluster_port = cluster_port
        metadata.table_schema = result['table_schema']
        metadata.table_name = result['table_name']
        metadata.table_type = result['table_type']
        metadata.engine = result['engine']
        metadata.row_format = result['row_format']
        metadata.table_rows = result['table_rows'] if result['table_rows'] else 0
        metadata.avg_row_length = result['avg_row_length']
        metadata.data_length = result['data_length']
        metadata.max_data_length = result['max_data_length']
        metadata.index_length = result['index_length']
        metadata.data_free = result['data_free']
        metadata.auto_increment = result['auto_increment'] if result['auto_increment'] else 0
        metadata.create_time = result['create_time']
        metadata.table_collation = result['table_collation']
        metadata.create_statement = result['create_statement']
        metadata.create_options = result['create_options']
        metadata.table_comment = result['table_comment']
        metadata.save()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号