MySQL

做最专业的DBA

Python HashCode 分库分表逻辑

def longToInt(value):
        assert isinstance(value, (int, long))
        return int(value & sys.maxint)


#4294967295             int unsigned
#18446744073709551615   bigint unsigned
def int_overflow(val):
    maxint = 4294967295
    if not -maxint-1 <= val <= maxint:
        val = (val + (maxint + 1)) % (2 * (maxint + 1)) - maxint - 1
    return val


# get the database no, table no
def get_db_no(val):
        no=abs(int_overflow(longToInt(val ^ (val >> 32)))) % 64
        if no < 10:
                no='0'+str(no)
        else:
                no=str(no)
        return no

def get_table_no(val):
        no= abs(int_overflow(longToInt(val ^ (val >> 32)))) % 63
        #no=str(no)
        return no
阅读更多

扫码向博主提问

去开通我的Chat快问

mchdba

博客专家

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • MySQL Hbas
  • Hbase
  • Tidb
  • cdb
  • 数据拆分
个人分类: - - - Python
上一篇Python MySQL 连接池
下一篇山重水复疑无路,柳暗花明又一村
想对作者说点什么? 我来说一句

Python+MySQL分表分库实战

2018年02月18日 2.11MB 下载

没有更多推荐了,返回首页

关闭
关闭