我正在使用 Python 3.3.1、Pyramid 和 SQLAlchemy 的最新版本,我认为我遇到了一些 Unicode 问题。
我有一个这样设置的数据库模型:
class Blah(Base):
__tablename__ = 'terms'
term_id = Column(Integer, primary_key=True)
title = Column(Unicode, unique=True)
created = Column(DateTime, default=datetime.datetime.utcnow)
body = Column(UnicodeText)
@property
def slug(self):
return slugify(self.title)
@classmethod
def all(cls):
return DBSession.query(Blah).order_by(sa.desc(Blah.title))
@classmethod
def by_id(cls, term_id):
return DBSession.query(Blah).filter(Blah.term_id == term_id).first()
@classmethod
def by_slug(cls, slug):
return DBSession.query(Blah).filter(Blah.slug == slug).first()
@classmethod
def get_paginator(cls, request, page=1):
page_url = PageURL_WebOb(request)
return Page(Blah.all(), page, url=page_url, items_per_page=5)
slugify 和 paginator 是我从 Python 2 代码改编的函数,并通过基本测试检查确定。我可以运行类似 >> slugify('String text') 的东西并得到一个看起来像我想要的 string-text 的输出。
当我尝试将东西添加到数据库而不是我得到的蛞蝓或类似的东西而不是真正的蛞蝓时。我尝试了各种方法,例如让标题使用 Text 而不是 Unicode 或 UnicodeText。任何帮助将不胜感激。
(附带说明一下,我可以让它在 Python 2 中正常工作,就像它的设置方式一样......但是查询 by_slug 有效,但前提是我首先查询 by_id。所以 term_id 和 slug 都必须在网址正常工作。不确定这是否相关......可能是第二个问题)