我有一个问题:
MyModel.query.filter(Mymodel.name.contains('a_string'))
Run Code Online (Sandbox Code Playgroud)
我需要做同样的查询但是使用否定(不喜欢运算符)但是在SQLAlchemy文档中没有找到符合我需要的运算符.
有没有办法不使用SQLAlchemy的SQL部分???
我需要解析一个xml文件来提取一些数据.我只需要一些具有某些属性的元素,这里是一个文档示例:
<root>
<articles>
<article type="news">
<content>some text</content>
</article>
<article type="info">
<content>some text</content>
</article>
<article type="news">
<content>some text</content>
</article>
</articles>
</root>
Run Code Online (Sandbox Code Playgroud)
在这里,我想只获得"新闻"类型的文章.用lxml做最有效和最优雅的方法是什么?
我尝试使用find方法,但它不是很好:
from lxml import etree
f = etree.parse("myfile")
root = f.getroot()
articles = root.getchildren()[0]
article_list = articles.findall('article')
for article in article_list:
if "type" in article.keys():
if article.attrib['type'] == 'news':
content = article.find('content')
content = content.text
Run Code Online (Sandbox Code Playgroud) 我在使用SQLALchemy管理数据库操作的应用程序中定义了一些WTForms表单.
例如,用于管理类别的表单:
class CategoryForm(Form):
name = TextField(u'name', [validators.Required()])
Run Code Online (Sandbox Code Playgroud)
这是相应的SQLAlchemy模型:
class Category(Base):
__tablename__= 'category'
id = Column(Integer, primary_key=True)
name = Column(Unicode(255))
def __repr__(self):
return '<Category %i>'% self.id
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
我想在表单验证上添加一个唯一约束(不在模型本身上).
阅读WTForms文档,我找到了一种简单类的方法:
class Unique(object):
""" validator that checks field uniqueness """
def __init__(self, model, field, message=None):
self.model = model
self.field = field
if not message:
message = u'this element already exists'
self.message = message
def __call__(self, form, field):
check = self.model.query.filter(self.field == field.data).first()
if check:
raise …
Run Code Online (Sandbox Code Playgroud) 我想为我使用或创建的每个virtualenv实例更改我的zsh提示样式.我的实际提示是这样的:
declare PS1="%{$fg[magenta]%}%n%{$reset_color%} at %{$fg[yellow]%}%m%{$reset_color%} in %{$fg_bold[green]%}%3~%{$reset_color%}"
Run Code Online (Sandbox Code Playgroud)
当我激活virtualenv时,它只是在提示之前添加一些信息:
(the name of my venv)my_prompt
Run Code Online (Sandbox Code Playgroud)
你知道改变颜色或款式的方法吗?
我需要在一个丑陋的XML文件中转义特殊字符(5000行左右).这是我必须处理的XML的一个例子:
<root>
<element>
<name>name & surname</name>
<mail>name@name.org</mail>
</element>
</root>
Run Code Online (Sandbox Code Playgroud)
这里的问题是名称中的字符"&".你会如何使用Python库来逃避这样的特殊字符?我没有找到使用 BeautifulSoup的方法.
在ModelForm中,我必须测试用户权限,让他们填写正确的字段:
它的定义如下:
class TitleForm(ModelForm):
def __init__(self, user, *args, **kwargs):
super(TitleForm,self).__init__(*args, **kwargs)
choices = ['','----------------']
# company
if user.has_perm("myapp.perm_company"):
self.fields['company'] = forms.ModelChoiceField(widget=forms.HiddenInput(),
queryset=Company.objects.all(), required=False)
choices.append(1,'Company')
# association
if user.has_perm("myapp.perm_association")
self.fields['association'] =
forms.ModelChoiceField(widget=forms.HiddenInput(),
queryset=Association.objects.all(), required=False)
choices.append(2,'Association')
# choices
self.fields['type_resource'] = forms.ChoiceField(choices = choices)
class Meta:
Model = Title
Run Code Online (Sandbox Code Playgroud)
这个ModelForm可以完成这项工作:我隐藏了模板上的每个字段,并且由于javascript而使它们出现......
问题是这个ModelForm是模型中定义的每个字段都将显示在模板上.
如果不需要,我想从表单中删除它们:
例如:如果用户对模型公司没有权利,则不会在模板中的呈现形式中使用它.
问题是你必须将字段列表放在带有字段或排除属性的表单的Meta类中,但我不知道如何动态地管理它们.
任何的想法??
感谢提前回答任何问题.
我有一些SQLAlchemy模型(声明性)和一些查询,如:
Mymodel.query.filter(Mymodel.myfield=='lambda')
Run Code Online (Sandbox Code Playgroud)
因为我必须在我的代码中多次使用上述查询,所以我想要反复重复一遍.我知道在django你可以通过在你的模型中加入经理来做到这一点.
在SQLAlchemy中有没有与django的经理相同的东西?或者也许是另一种方式呢?
我有一些SA模型,需要一些技巧:
class Entry(Base):
__tablename__ = 'entry'
id = Column(Integer, primary_key=True)
title = Column(Unicode(255))
author_id = Column(Integer, ForeignKey('user.id'))
date = Column(DateTime)
content = Column(Text)
author = relationship('User', backref='entries')
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
username = Column(Unicode(255))
...
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,这是非常经典的,用户写条目...我需要渲染一些关于它们的统计数据(比如每周/每月显示它们的条目......)
对于计数条目,我将column_property添加到用户模型,如下所示:
class User(Base):
...
entries_count = column_property(select([func.count(Entry.id)]).\
where(Entry.author_id==id))
Run Code Online (Sandbox Code Playgroud)
这让我可以看到用户已经写了多少条目.但是为了给出一些日期范围的统计数据,我需要动态调整entries_count以添加日期标准.
所以问题是:你将如何管理日期标准?column_property是满足这种需求的最佳解决方案吗?
谢谢你提前.
在django应用程序中,我需要显示搜索结果,并让用户下载结果的csv文件.
实际上我只是写了一个视图,它使用形式args通过ORM进行查询,并将结果显示在模板中的表中.
这里是视图的结尾:
return render_to_response(template, {'form': form, 'object_list': object_list}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)
我想在表格下面添加一个链接,下载所提供结果的csv文件.我知道如何在python/django中创建一个csv文件,但不知道如何在模板中的结果中同时呈现它.
任何的想法??感谢提前回答任何问题.
python ×5
sqlalchemy ×4
django ×2
lxml ×2
orm ×2
attributes ×1
count ×1
csv ×1
dynamic ×1
field ×1
find ×1
modelform ×1
negation ×1
unique ×1
validation ×1
virtualenv ×1
wtforms ×1
xml ×1
zsh ×1