从C ++

时间:2016-11-23 02:43:47

标签: python c++ sqlite

我使用Anaconda,我已经在环境中安装了sqlite3。

当我在IDE中运行我的脚本时,它会创建并填充数据库没问题。

当我从C ++运行脚本时,它会忽略没有错误的SQLite3部分,也不会创建或填充数据库。我知道脚本在从C ++调用时会运行,因为它的其他部分仍然可以运行,但它只是忽略了SQLite方面。

C ++部分:

string command = "C:\\Anaconda3\\python.exe C:\\CoSim2\\PYTHON\\python\\MainMaster.py " + std::to_string(minute);

Python部分:

import math
import sys
import sqlite3
from pathlib import Path


conn = sqlite3.connect('CoSimTest.db')
c = conn.cursor()

def create_table():
    c.execute('CREATE TABLE IF NOT EXISTS PowerSysInfo(time REAL, NumOfNodes INT, NumOfBuses INT, BusLocation TEXT, PhaseNumber INT, v1 REAL, a1 REAL, phase1 INT, v2 REAL, a2 REAL, phase2 INT, v3 REAL, a3 REAL, phase3 INT)')

create_table()

发生了什么?为什么在IDE中运行脚本运行得很好,但是当C ++运行.py时它只是忽略SQLite部分而没有错误?

2 个答案:

答案 0 :(得分:0)

无法告诉您提供的实际启动python脚本的方式。你有一个字符串复制你在命令行输入的内容(我假设这是std::to_string(minute)部分是什么?),但是根据你实际执行脚本的方式,它可能会期望启动参数是输入方式不同。

检查以确保你的参数实际上被python脚本看到了。

确保您的工作目录与IDE使用的目录相同。

答案 1 :(得分:0)

所以我想我会将解决方案发布到我自己的问题上以防其他人遇到这个问题。 conn = sqlite3.connect('CoSimTest.db')需要完整路径,因为本地目录在不从ide运行时会发生变化。