python - 使用 Pylons 和 SQLalchemy 在 sqlite 中存储 UUID

标签 python sqlite sqlalchemy pylons

我正在使用 SQLalchemy 和 sqlite 开发我的第一个 Pylons 项目。 我想使用 UUID 作为我的一个表的主键。我发现了下面的问题,我使用代码将自定义 UUID() 类型添加到 SQLalchemy。 (第二种解决方案,我无法弄清楚如何使用 zzzeek 的建议。)

Random ids in sqlalchemy (pylons)

但是,当我尝试时,我得到 ValueError('bytes is not a 16-char string') 我怀疑这与我试图将此 UUID 存储在 sqlite VARCHAR 类型字段中这一事实有关。 有谁知道我应该在 sqlite 中使用哪种类型的字段来处理这些来自 SQLalchemy 的 UUID?

谢谢, 埃里克

最佳答案

你是对的,这只适用于 postgresql(我使用的数据库)。 但我潜入你提供的帖子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', 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)
)

关于python - 使用 Pylons 和 SQLalchemy 在 sqlite 中存储 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849389/

相关文章:

python - 对象检测 model_main.py 错误 : Cannot batch tensors with different shapes in component 1

java - 在 Android 中使用 Fragment 的 SQLite 数据库

python - SQLAlchemy 唯一对象

python - SQLAlchemy 关联表(关联对象模式)引发 IntegrityError

entity-framework - SQLite 数据库放置在 UWP 应用中的位置

python - 使用 SQLAlchemy 和 PostgreSQL 的 Flask 单元测试会耗尽数据库连接

python - 向量化或加速 PANDAS 列上的 Fuzzywuzzy 字符串匹配

Python Koans 单例元组

python - 如何使用 python 从一个大文本文件创建 5 个小文本文件?

Python - SQLite SELECT 查询只能使用一次?