使用SQLAlchemy将对象插入到数据库时,所有对应于String()列的属性都会自动从<类型'str'>转换为<类型'unicode'>。有没有办法来防止这种行为?SQLAlchemy在提交时自动将str转换为unicode
下面是代码:
from sqlalchemy import create_engine, Table, Column, Integer, String, MetaData
from sqlalchemy.orm import mapper, sessionmaker
engine = create_engine('sqlite:///:memory:', echo=False)
metadata = MetaData()
table = Table('projects', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(50))
)
class Project(object):
def __init__(self, name):
self.name = name
mapper(Project, table)
metadata.create_all(engine)
session = sessionmaker(bind=engine)()
project = Project("Lorem ipsum")
print(type(project.name))
session.add(project)
session.commit()
print(type(project.name))
这里是输出:
<type 'str'>
<type 'unicode'>
我知道我应该可能只是使用Unicode工作,但是这将需要通过一些第三方的代码挖掘我还没有Python技能:)
这里的二丑黑客:要么使用二进制,而不是字符串或'engine.connect()connection.connection .text_factory = str' – jfs 2010-06-13 21:09:13
非常感谢你,如果你已经发布了答案,我会接受这个解决方案:) – 2010-06-13 21:25:14