小编Jér*_*eot的帖子

如何在sqlalchemy ORM查询中传递一个不喜欢的运算符

我有一个问题:

MyModel.query.filter(Mymodel.name.contains('a_string'))
Run Code Online (Sandbox Code Playgroud)

我需要做同样的查询但是使用否定(不喜欢运算符)但是在SQLAlchemy文档中没有找到符合我需要的运算符.

有没有办法不使用SQLAlchemy的SQL部分???

orm sqlalchemy negation

48
推荐指数
2
解决办法
2万
查看次数

使用lxml按属性查找元素

我需要解析一个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)

python attributes lxml find

46
推荐指数
2
解决办法
5万
查看次数

使用SQLAlchemy模型的WTForms中的唯一验证器

我在使用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)

validation sqlalchemy unique wtforms

13
推荐指数
2
解决办法
6255
查看次数

使用zsh更改virtualenv实例的提示样式

我想为我使用或创建的每个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)

你知道改变颜色或款式的方法吗?

python zsh virtualenv

10
推荐指数
1
解决办法
5404
查看次数

使用python转义xml文件中的字符

我需要在一个丑陋的XML文件中转义特殊字符(5000行左右).这是我必须处理的XML的一个例子:

<root>
 <element>
  <name>name & surname</name>
  <mail>name@name.org</mail>
 </element>
</root>
Run Code Online (Sandbox Code Playgroud)

这里的问题是名称中的字符"&".你会如何使用Python库来逃避这样的特殊字符?我没有找到使用 BeautifulSoup的方法.

python xml lxml beautifulsoup special-characters

7
推荐指数
1
解决办法
1万
查看次数

从动态ModelForm中删除字段

在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类中,但我不知道如何动态地管理它们.

任何的想法??
感谢提前回答任何问题.

django field dynamic modelform

5
推荐指数
1
解决办法
7960
查看次数

在SQLAlchemy中有没有与django的经理相同的东西?

我有一些SQLAlchemy模型(声明性)和一些查询,如:

Mymodel.query.filter(Mymodel.myfield=='lambda')
Run Code Online (Sandbox Code Playgroud)

因为我必须在我的代码中多次使用上述查询,所以我想要反复重复一遍.我知道在django你可以通过在你的模型中加入经理来做到这一点.

在SQLAlchemy中有没有与django的经理相同的东西?或者也许是另一种方式呢?

python orm sqlalchemy django-models

5
推荐指数
1
解决办法
1830
查看次数

使用SQLAlchemy动态column_property

我有一些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是满足这种需求的最佳解决方案吗?

谢谢你提前.

python sqlalchemy count

4
推荐指数
1
解决办法
2469
查看次数

在django模板中下载csv

在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文件,但不知道如何在模板中的结果中同时呈现它.

任何的想法??感谢提前回答任何问题.

csv django

1
推荐指数
1
解决办法
2401
查看次数