python – sqlalchemy – 反映带空格的表和列
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python – sqlalchemy – 反映带空格的表和列,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1672字,纯文字阅读大概需要3分钟。
内容图文
![python – sqlalchemy – 反映带空格的表和列](/upload/InfoBanner/zyjiaocheng/893/26a4444e773a481fa4a7cc828956dd5a.jpg)
如何在列名(和表名)中包含空格的数据库中使用sqlalchemy?
db.auth_stuff.filter(“db.auth_stuff.first name”==’Joe’)显然无法正常工作.我不想在进行反射时手动定义所有内容,而是想在从数据库读取的现有表名之间添加类似lambda x:x.replace(”,’_’)的东西,并在我的模型中使用. (创建一个通用函数来重命名所有不能与python一起使用的表名也可能很有用 – 保留字等)
有这么简单/干净的方法吗?
我想我需要定义自己的mapper类?
https://groups.google.com/forum/#!msg/sqlalchemy/pE1ZfBlq56w/ErPcn1YYSJgJ
或者使用某种__mapper_args__参数 –
http://docs.sqlalchemy.org/en/rel_0_8/orm/mapper_config.html#naming-all-columns-with-a-prefix
理想情况下:
class NewBase(Base):
__mapper_args__ = {
'column_rename_function' : lambda x: x.replace(' ','_')
}
class User(NewBase):
__table__ = "user table"
}
解决方法:
你可以使用reflection event为列提供一个.key,但是当涉及主键列时,完整的配方有一个错误,这个错误在尚未发布的0.8.3版本(以及master)中得到修复.如果你在https://bitbucket.org/zzzeek/sqlalchemy/get/rel_0_8.zip检查0.8.3,这个配方甚至可以使用主键cols:
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base, DeferredReflection
Base = declarative_base(cls=DeferredReflection)
e = create_engine("sqlite://", echo=True)
e.execute("""
create table "user table" (
"id col" integer primary key,
"data col" varchar(30)
)
""")
from sqlalchemy import event
@event.listens_for(Table, "column_reflect")
def reflect_col(inspector, table, column_info):
column_info['key'] = column_info['name'].replace(' ', '_')
class User(Base):
__tablename__ = "user table"
Base.prepare(e)
s = Session(e)
print s.query(User).filter(User.data_col == "some data")
DeferredReflection是用于声明性反射的可选助手.
内容总结
以上是互联网集市为您收集整理的python – sqlalchemy – 反映带空格的表和列全部内容,希望文章能够帮你解决python – sqlalchemy – 反映带空格的表和列所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。