小编Tes*_*a J的帖子

Sqlalchemy 多次插入失败,列名中带有百分比符号 (%)

我正在尝试使用 sqlalchemy(版本 1.0.11)对列名中带有百分比符号的列执行多插入。行可以被插入一个在没有问题的时刻,但是当执行多刀片与con.execute()一个OperationalError异常。

下面的代码重现了这个问题。创建了两个表,一个在列中有百分比名称,另一个没有。

  1. 列名中带有 % 的表上的多重插入失败。
  2. 在列名中使用 % 在表中一一插入行是有效的。
  3. 在列名中没有 % 的表上的多插入工作。
    from sqlalchemy import *
    
    USER = 'root'
    PASSWORD = ''
    HOST = '127.0.0.1'
    DBNAME = 'test'
    
    connect_str = "mysql://{USER}:{PASSWORD}@{HOST}/{DBNAME}".format(
        USER = USER,
        PASSWORD = PASSWORD,
        HOST = HOST,
        DBNAME = DBNAME
    )
    
    engine = create_engine(connect_str, echo = False)
    
    metadata = MetaData()
    
    table_with_percent = Table('table_with_percent', metadata,
         Column('A%', Integer),
         Column('B%', Integer)
    )
    
    table_no_percent = Table('table_no_percent', metadata,
         Column('A', Integer),
         Column('B', Integer)
    )
    
    metadata.create_all(engine, checkfirst = True) …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

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

Systemd看门狗通过脚本运行程序

我有这个 python 代码,我需要运行systemd它并监视它是否也被挂起。问题是,当我直接从 systemd 运行 python 脚本时,它工作正常。但是,当 python 脚本从另一个从我的 systemd 服务运行的 shell 脚本运行时,它说

sdping_py.service: Got notification message from PID 6828, but reception only permitted for main PID 6768
Run Code Online (Sandbox Code Playgroud)

问题似乎是作为 shell 脚本和 systemd 服务的子进程运行的 python 脚本期望来自 shell 脚本的通知,这是服务的主要进程。我怎样才能解决这个问题?我的应用程序严格需要从 shell 脚本运行。

这是我试过的python代码,

import sdnotify, time

n = sdnotify.SystemdNotifier()
print("Gonna start")
time.sleep(2)
print("Started!")

n.notify("READY=1")
i=0
while True:
    print(i)
    time.sleep(1)
    n.notify("WATCHDOG=1")
    i+=1
Run Code Online (Sandbox Code Playgroud)

这是我的服务文件

[Unit]
Description=Test watchdog Demo process
DefaultDependencies=false
Requires=basic.target

[Service]
Type=notify
WatchdogSec=2
ExecStart=/home/teshanl/sdping/scripts/sdping_py.sh
#ExecStart=/usr/bin/python /home/teshanl/sdping/src/sdping_pub.py
StartLimitInterval=5min
StartLimitBurst=5
#StartLimitAction=reboot
Restart=always
Run Code Online (Sandbox Code Playgroud)

这是shell文件

#!/bin/bash …
Run Code Online (Sandbox Code Playgroud)

python bash watchdog ros systemd

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

C++ if 语句中的变量赋值

在 C++ 中,以下是有效的,我可以毫无问题地运行它

int main(){
    if (int i=5)
        std::cout << i << std::endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,即使以下内容也应该有效,但它给了我一个错误

if ((int i=5) == 5)
    std::cout << i << std::endl;
Run Code Online (Sandbox Code Playgroud)

错误:

test.cpp: In function ‘int main()’:
test.cpp:4:10: error: expected primary-expression before ‘int’
     if ((int i=5) == 5)
          ^
test.cpp:4:10: error: expected ‘)’ before ‘int’
test.cpp:5:36: error: expected ‘)’ before ‘;’ token
         std::cout << i << std::endl;
                                    ^
Run Code Online (Sandbox Code Playgroud)

此外,在 c++17 下面的代码也必须有效,但它再次给我一个类似的错误

if (int i=5; i == 5)
    std::cout << i << std::endl; …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement variable-assignment c++11 c++17

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

有关财产特征的问题

假设我正在创建车辆本体。车辆及其制造商通过诸如此类的连接MyCar hasManufacturer Tesla。然后,制造商有一个原产国,我将其指定为Tesla hasCountryOfOrigin USA。我要的是运行我的推理机时MyCar要连接的USAMyCar hasCountryOfOrigin USA。我知道这与传递财产不同。我该如何实现?(专门使用Protege)

rdf semantic-web owl ontology protege

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

Nvidia 驱动安装未满足依赖关系

我有一台配备1060 GPU 的笔记本电脑,安装了 Ubuntu 20.04。我已经安装了nvidia-driver-460 + cuda 11.2并一直工作到今天。我今天尝试安装 ROS,在按照此链接添加源代码和密钥后,它不允许我安装 ROS,说某些软件包有unmet dependencies。之后我发布了apt autoremove并删除了nvidia 驱动程序cuda

我仍然无法安装 ROS,现在尝试安装也apt install nvidia-driver-460可以。这是与命令输出类似的unmet dependencies输出sudo ubuntu-drivers autoinstallapt install

Reading package lists... Done
Building dependenc    y tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages …
Run Code Online (Sandbox Code Playgroud)

linux graphics ubuntu apt nvidia

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