请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

sqlalchemy 如何使用UUID作为主键的生成模式,而不是自增

老师,您好,打扰了。我想知道如何用SQLAlchemy实现UUID作为主键。在网上查了一些资料,用法都不一样,有些复杂,有些简单,不知道标准的写法是什么?谢谢老师

正在回答

插入代码

1回答

uuid 就是一串随机字符串,没有什么特别的讲究,同学可以发一下你看到的几个不同实现方法链接

0 回复 有任何疑惑可以回复我~
  • 提问者 Elijahol0808 #1
    这个比较简单的https://blog.csdn.net/a2211455/article/details/79388850
    这个比较复杂,它继承了sqlalchemy.types的TypeDecorator,自定义了一个UUID类。这个链接需要科学上网
    https://gist.github.com/craigdmckenna/b52cb7207a413672c5576e554c527111
    回复 有任何疑惑可以回复我~ 2021-05-20 00:31:13
  • 提问者 Elijahol0808 #2
    import UUID
    
    
    from sqlalchemy.dialects.mysql import BINARY
    
    from sqlalchemy.types import TypeDecorator
    
    
    
    class BinaryUUID(TypeDecorator):
        '''Optimize UUID keys. Store as 16 bit binary, retrieve as uuid.
        inspired by:
            http://mysqlserverteam.com/storing-uuid-values-in-mysql-tables/
        '''
        
        impl = BINARY(16)
        
        def process_bind_param(self, value, dialect):
            try:
                return value.bytes
            except AttributeError:
                try:
                    return UUID(value).bytes
                except TypeError:
                    # for some reason we ended up with the bytestring
                    # ¯\_(ツ)_/¯
                    # I'm not sure why you would do that,
                    # but here you go anyway.
                    return value
                    
        def process_result_value(self, value, dialect):
            return UUID(bytes=value)
    回复 有任何疑惑可以回复我~ 2021-05-20 00:31:52
  • 提问者 Elijahol0808 #3
    老师,您可以的话,看下链接,本想把代码复制过来,但格式太乱了,不好意思
    回复 有任何疑惑可以回复我~ 2021-05-20 00:34:45
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号