我想搜索 SQLAlachmey 列表(通过关联表)并通过过滤器匹配其中的多个项目。
我已经查看了这个问题,但我希望仅通过 ORM 过滤器来完成此操作(第二个答案不是通过关联表)。
数据库表设置:
tag_ast_table = Table('tag_association',
Base.metadata,
Column('file_id', Integer, ForeignKey('files.id')),
Column('tag_id', Integer, ForeignKey('tags.id')),
PrimaryKeyConstraint('file_id', 'tag_id'))
class File(Base):
__tablename__ = 'files'
id = Column(Integer, primary_key=True)
tags = relationship("Tag", secondary=tag_ast_table)
class Tag(Base):
__tablename__ = 'tags'
id = Column(Integer, primary_key=True)
tag = Column(String)
Run Code Online (Sandbox Code Playgroud)
当前过滤器匹配任何我想修改以匹配所有:
query = db.query(File).filter(File.tags.any(Tag.tag.in_(my_list))).all()
Run Code Online (Sandbox Code Playgroud) 我有自定义列表和字典类,在Python 3.7中进行unpickling时不再有效.
import pickle
class A(dict):
pass
class MyList(list):
def __init__(self, iterable=None, option=A):
self.option=option
if iterable:
for x in iterable:
self.append(x)
def append(self, obj):
if isinstance(obj, dict):
obj = self.option(obj)
super(MyList, self).append(obj)
def extend(self, iterable):
for item in iterable:
self.append(item)
if __name__ == '__main__':
pickle_file = 'test_pickle'
my_list = MyList([{'a': 1}])
pickle.dump(my_list, open(pickle_file, 'wb'))
loaded = pickle.load(open(pickle_file, 'rb'))
print(isinstance(loaded[0], A))
Run Code Online (Sandbox Code Playgroud)
适用于Python 2.6到3.6:
"C:\Program Files\Python36\python.exe" issue.py
True
Run Code Online (Sandbox Code Playgroud)
但是不再self.option在3.7中正确设置.
"C:\Program Files\Python37\python.exe" issue.py
Traceback (most recent call last):
File "issue.py", line …Run Code Online (Sandbox Code Playgroud) 我试图在 FFmpeg 处于非 shell 子进程中时暂停它的编码(这对于它如何在更大的程序中发挥作用很重要)。这可以通过按下键盘上的“暂停/中断”键来完成,我正在尝试将其发送到 Popen。
命令本身必须是跨平台兼容的,因此我无法以任何方式包装它,但我可以根据需要发送信号或运行特定于平台的函数。
我研究了如何通过 pid 或处理程序向子进程发送“Ctrl+Break”,它建议发送信号,但这引发了“ValueError:不支持的信号:21”
from subprocess import Popen, PIPE
import signal
if __name__ == '__main__':
command = "ffmpeg.exe -y -i example_video.mkv -map 0:v -c:v libx265 -preset slow -crf 18 output.mkv"
proc = Popen(command, stdin=PIPE, shell=False)
try:
proc.send_signal(signal.SIGBREAK)
finally:
proc.wait()
Run Code Online (Sandbox Code Playgroud)
然后尝试使用GenerateConsoleCtrlEvent创建Ctrl+Break事件,如下所述https://learn.microsoft.com/en-us/windows/console/generateconsolectrlevent
from subprocess import Popen, PIPE
import ctypes
if __name__ == '__main__':
command = "ffmpeg.exe -y -i example_video.mkv -map 0:v -c:v libx265 -preset slow -crf 18 output.mkv"
proc = Popen(command, …Run Code Online (Sandbox Code Playgroud) 简单的演示应用程序我试图将主题设置为 dark。我更喜欢代码版本(非 QtQuick 首选),但我看到的 Python 唯一方法是使用 QtQuick 配置文件,即使这样也行不通。
from PySide6 import QtWidgets
from PySide6 import QtQuick
if __name__ == '__main__':
app = QtWidgets.QApplication()
app.setApplicationDisplayName("Should be Dark Theme")
app.setStyle("Universal")
view = QtQuick.QQuickView()
view.show()
app.exec()
Run Code Online (Sandbox Code Playgroud)
我在同一目录中有一个qtquickcontrols2.conf 配置文件。(还尝试将 QT_QUICK_CONTROLS_CONF 设置为绝对路径。)
[Controls]
Style=Material
[Universal]
Theme=Dark
[Material]
Theme=Dark
Run Code Online (Sandbox Code Playgroud)
然而,它仍然是亮白色的:
我不在乎它是材质风格还是通用风格,只想为标题栏内置一些深色模式。最后,需要一种方法使标题栏变暗,而无需创建自定义标题栏。
感谢您的指导!
当我尝试pip在我的机器上运行命令时,我注意到这个问题WSL2 Ubuntu-20.04,运行任何东西都需要很长时间。我最终将范围缩小到pip导入keyring模块的时间。
Python 3.8.5 (default, May 27 2021, 13:30:53)
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> def import_keyring():
... time_start = time.time()
... import keyring
... print(f"Keyring took {time.time() - time_start} seconds to load")
...
>>> import_keyring()
Keyring took 400.4930064678192 seconds to load
Run Code Online (Sandbox Code Playgroud)
查看进程资源管理器,似乎有一个子进程正在等待:
dbus-launch --autolaunch <32 character hex string> --binary-syntax --close-stderr
Run Code Online (Sandbox Code Playgroud)
dbus-launch 命令本身似乎没有任何子进程,所以我常常strace查看它挂在哪里:
connect(3, {sa_family=AF_INET, sin_port=htons(6000), sin_addr=inet_addr("<my main machine's …Run Code Online (Sandbox Code Playgroud) python ×5
python-3.x ×3
dbus ×1
ffmpeg ×1
pickle ×1
pip ×1
popen ×1
pyside6 ×1
python-2.7 ×1
qt6 ×1
signals ×1
sqlalchemy ×1
subprocess ×1