我在 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命令的工作。有人能详细说明一下吗?
我需要在两列时间戳类型之间的分钟数内计算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) 我正在使用sqlalchemy==1.1.4. 我完全陷入了尝试为insert从DeclarativeMeta类继承的模型执行多值的过程中。我有下一个声明:
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 …