小编Ale*_*nov的帖子

为什么 os.chflags() 在 Linux 下不起作用?

我在 Debian GNU/Linux 8 (jessie) 64 位下使用 Python 2.7.9。我只是尝试通过调用os.chflags(path, mode). 在 Python 文档中,有一篇关于os接口文章说该方法在Unix 中可用,但不适用于 Linux。Python 总是抛出:

Traceback (most recent call last):
File "/home/lexer/py/epam/tests/main.py", line 43, in <module>
os.chflags(path_to_file(file_name), stat.SF_NOUNLINK)
AttributeError: 'module' object has no attribute 'chflags'
Run Code Online (Sandbox Code Playgroud)

很久以前就已经提出了一个问题,但我仍然无法理解为什么os.chflags()不执行chattr命令的工作。有人能详细说明一下吗?

debian posix python-2.7

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

使用SQLAlchemy计算POSTGRES中的DATEDIFF

我需要在两列时间戳类型之间的分钟数内计算DATEDIFF。网上有很多简单的示例,但是使用psycopg2 + sqlalchemy时,它们都无法真正正常工作。我试过了:

from sqlalchemy import as sa
from datetime import datetime

# con is a standard pool of connections :class:Connection
con.execute(
    sa.func.datediff(
        sa.literal_column('minute'),
        datetime.utcnow(),
        datetime.utcnow(),
    )
)
Run Code Online (Sandbox Code Playgroud)

它抛出:

sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) column "minute" does not exist
LINE 1: SELECT datediff(minute, '2017-02-27T15:04:33.217559'::timest...
                    ^
[SQL: 'SELECT datediff(minute, %(datediff_2)s, %(datediff_3)s) AS datediff_1'] [parameters: {'datediff_3': datetime.datetime(2017, 2, 27, 15, 4, 33, 217596), 'datediff_2': datetime.datetime(2017, 2, 27, 15, 4, 33, 217559)}]
Run Code Online (Sandbox Code Playgroud)

如果我尝试:

con.execute(
    sa.func.datediff(
        'minute',
        datetime.utcnow(),
        datetime.utcnow(),
    )
)
Run Code Online (Sandbox Code Playgroud)

我收到:

sqlalchemy.exc.ProgrammingError: …
Run Code Online (Sandbox Code Playgroud)

python postgresql sqlalchemy psycopg2

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

对基于声明的模型使用多值插入时,不会为每一行单独调用 Python 端默认值

我正在使用sqlalchemy==1.1.4. 我完全陷入了尝试为insertDeclarativeMeta类继承的模型执行多值的过程中。我有下一个声明:

import sqlalchemy as sa
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class SomeClass(Base):
    id = sa.Column(sa.String(length=64), primary_key=True,
               default=lambda: str(uuid4()))
    is_active = sa.Column(sa.Boolean, default=True)
    service_id = sa.Column(sa.String(length=100), nullable=False)
    order = sa.Column(sa.SmallInteger, default=0)
Run Code Online (Sandbox Code Playgroud)

当我尝试多值插入时:

con.execute(
    sa.insert(SomeClass).values([
        {SomeClass.service_id: '12'},
        {SomeClass.service_id: '34'},
    ])
)
Run Code Online (Sandbox Code Playgroud)

它抛出

sqlalchemy.exc.CompileError: INSERT value for column SomeClass.service_id is
  explicitly rendered as a boundparameter in the VALUES clause; a
  Python-side value or SQL expression is required
Run Code Online (Sandbox Code Playgroud)

根据 Michael Bayer 的帖子链接,无论如何我的代码似乎是正确的,但它甚至没有编译为 sql …

python orm sqlalchemy

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

标签 统计

python ×2

sqlalchemy ×2

debian ×1

orm ×1

posix ×1

postgresql ×1

psycopg2 ×1

python-2.7 ×1