使用Pylons和SQLalchemy在sqlite中存储UUID

前端之家收集整理的这篇文章主要介绍了使用Pylons和SQLalchemy在sqlite中存储UUID前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用sqlalchemy和sqlite开发我的第一个Pylons项目.
我想使用UUID作为我的一个表的主键.我在下面找到了问题,并使用代码sqlalchemy添加自定义UUID()类型. (第二个解决方案,我无法弄清楚如何使用zzzeek的建议.)

Random ids in sqlalchemy (pylons)

但是,当我尝试它时,我得到ValueError(‘bytes不是16-char字符串’)
我怀疑这与我试图将此UUID存储在sqlite VARCHAR类型字段中这一事实有关.
有谁知道我应该在sqlite中使用哪种类型的字段,这些字段适用于来自sqlalchemy的这些UUID?

谢谢,
埃里克

解决方法

你是对的,这只是为postgresql工作(db我用).
但我在你提供 Random ids in sqlalchemy (pylons)的帖子中潜水,它确实在sqlite中工作,只是不遵循zzzeek的答案
转到Tom Willis解决方案,只需要考虑一些事情我遵循完成此代码但改变一些事情:
逐行:

#I delete follow line:
from sqlalchemy.databases.MysqL import MSBinary

因为在sqlalchemy 0.6中它是dialects.sqllite但我没有使用它
我用:

from sqlalchemy.types import Binary

只需更改UUID类中的以下行:

class UUID(types.TypeDecorator):
    impl = Binary # this one!

...
...
id_column_name = "id"

def id_column():
    import uuid
    return Column(id_column_name,UUID(),primary_key=True,default=uuid.uuid4)


#usage:
app_uuid = Column(u'app_uuid',primary_key=True)

这对我有用,祝你好运!

以前的答案

user = Table(
    'User',Meta.Metadata,Column('ID',UUID(as_uuid=True),primary_key=True),Column('Name',String(250),nullable=False,unique=True)
)

猜你在找的Sqlite相关文章