我正在使用 MySQL(运行 InnoDB),并使用 sqlalchemy 包装了整个东西。现在,我想使用(参见文档)在我的数据库中生成更改
sqlalchemy_utils.functions.create_database(...)
Run Code Online (Sandbox Code Playgroud)
通常,上面的函数会做它应该做的事情。唯一的例外是唯一索引的生成。
说,我定义了一个这样的表:
## ...
# DeclBase = declarative_base()
## ...
class MyTable(DeclBase):
__tablename__ = 'my_table'
id = Column(Integer, primary_key=True)
attr_1 = Column(String(32))
attr_2 = Column(Integer, nullable=False)
attr_3 = Column(DateTime)
attr_4 = Column(
Integer,
ForeignKey('other_table.id', onupdate='CASCADE', ondelete='CASCADE'),
nullable=False
)
u_idx = UniqueConstraint(attr_2, attr_3, 'my_table_uidx')
Run Code Online (Sandbox Code Playgroud)
当我调用 create_database 时,我将让 sqlalchemy 使用指定的所有列创建表“my_table”。外键也设置得很好,但在数据库端找不到唯一索引。然后我尝试使用 Index(unique=True) 代替。所以代替
u_idx = UniqueConstraint(attr_2, attr_3, 'my_table_uidx')
Run Code Online (Sandbox Code Playgroud)
我放
u_idx_1 = Index('my_table_uidx', attr_2, attr_3, unique=True)
Run Code Online (Sandbox Code Playgroud)
我的印象是这在逻辑上产生了类似的结果。这次sqlalchemy确实在db上创建了唯一索引。
也许我对 UniqueConstraint 和 Index(unique=True) 之间的区别,或者 sqlalchemy 使用它们自动生成数据库的方式有一些误解。
任何人都可以对此有所了解吗?
我已经从源代码构建了自己的 opencv python 包。
import cv2
print(cv2.__version__)
Run Code Online (Sandbox Code Playgroud)
打印:3.4.5
现在我面临的问题是关于 opencv 的 VideoCapture 类中的 gstreamer 的使用。我正在尝试让这个最小工作示例在 python3 上运行
cap = cv2.VideoCapture("videotestsrc ! appsink")
if not cap.isOpened():
print("Cannot capture test src. Exiting.")
quit()
while True:
ret, frame = cap.read()
if ret == False:
break
cv2.imshow("CVtest",frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
Run Code Online (Sandbox Code Playgroud)
捕获失败,生成上面的打印内容(请参阅if声明)。我检查了:
import cv2
print(cv2.getBuildInformation())
Run Code Online (Sandbox Code Playgroud)
印刷:
Video I/O:
DC1394: NO
FFMPEG: NO
avcodec: NO
avformat: NO
avutil: NO
swscale: NO
avresample: NO
GStreamer: NO
libv4l/libv4l2: NO
v4l/v4l2: linux/videodev2.h
Run Code Online (Sandbox Code Playgroud)
看到这一点,我的 …
在我最近的项目中,我正在使用硬件端曲面细分.我想要实现的管道应采用低多边形网格,对其进行细分并应用置换贴图.
Tessellation工作正常,就像我预期的那样.但是,当我在曲面细分评估着色器中应用置换贴图时,我得到一个有点随机的输出.
这是没有位移的输出(我使用高度图作为纹理来验证我的texCoords是否准确)

这是我启用移位时获得的(使用相同的纹理进行着色和置换):

着色器代码如下:
// VERTEX SHADER
#version 430
layout(location = 0) in vec4 vertex;
layout(location = 1) in vec4 normal;
layout(location = 2) in vec2 texCoord;
out vec3 vPosition;
out vec3 vNormal;
out vec2 vTexCoord;
void main() {
vPosition = vertex.xyz;
vNormal = normal.xyz;
vTexCoord = texCoord;
}
Run Code Online (Sandbox Code Playgroud)
// TESS CONTROL
#version 430
layout(vertices = 3) out;
in vec3 vPosition[];
in vec3 vNormal[];
in vec2 vTexCoord[];
out vec3 tcPosition[];
out vec3 tcNormal[];
out vec2 tcTexCoord[];
uniform float innerTessLevel; …Run Code Online (Sandbox Code Playgroud) 我有一个项目涉及将 Oracle 数据库集成到 Qt 桌面应用程序中。由于 Qt 有一个非常易于使用的数据库交互界面,因此我编译了 QOCI 驱动程序来支持 Oracle 连接。
一切工作正常,但查询的处理时间非常慢。我怎样才能提高性能?
我处理任意查询的代码如下所示:
QList< QList<QString> > DBWrapper::executeQuery(QString const& queryString)
{
QList< QList<QString> > results;
if (_db.isOpen()) {
QSqlQuery qry(queryString);
if(qry.exec()) {
while(qry.next()) {
QList<QString> row;
results.append(row);
for(int i = 0; i < qry.record().count(); ++i) {
results.last().append(qry.value(i).toString());
}
}
} else {
qDebug() << queryString;
qDebug() << "FAILURE: cannot handle query.";
qDebug() << " > " << qry.lastError();
}
} else {
qDebug() << "Error Opening Database = " << _db.lastError(); …Run Code Online (Sandbox Code Playgroud) 我正在为QOpenGLWidget内的3D对象实现简单的单击选择。为此,我需要将2D鼠标坐标转换为3D世界空间。我以前使用QGLWidget实现了整个过程。使用QOpenGLWidget,我无法读取像素的GL_DEPTH_COMPONENT:
float z;
glReadPixels(pixel.x, height - pixel.y, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z);
Run Code Online (Sandbox Code Playgroud)
“ z”始终为0。为确保像素坐标正确,我尝试接收GL_RGBA值:
float rgba[4];
glReadPixels((int)p_temp.x(), (int) (viewport[3] - p_temp.y()), 1, 1, GL_RGBA, GL_FLOAT, rgba);
Run Code Online (Sandbox Code Playgroud)
,它返回正确的像素颜色。为了使它起作用,我不得不将像素坐标的域从局部坐标更改为父坐标。这可能是由于GL_VIEWPORT设置为与父窗口小部件尺寸相对应的事实造成的:
int viewport[4];
glGetIntegerv(GL_VIEWPORT, viewport);
Run Code Online (Sandbox Code Playgroud)
对于QGLWidget,它返回: {0, 0, this->width(), this->height()}
对于QOpenGLWidget,它返回: {0, 0, this->parent()->width(), this->parent()->height()}
顺便说一句,我的OpenGL版本是4.5,使用带有GL_DEPTH_COMPONENT的glReadPixels我没有任何OpenGL错误
现在,我对可能会丢失的东西一无所知。有任何想法吗?
如果我定义了一个数组类型,例如
type Integer_Array is array(Natural range <>) of Integer;
Run Code Online (Sandbox Code Playgroud)
并使用包 Ada.Containers.Vectors 作为
package Integer_Vectors is new Ada.Containers.Vectors(
Element_Type => Integer,
Index_Type => Natural);
use Integer_Vectors;
Run Code Online (Sandbox Code Playgroud)
我该如何实现以下功能?
function To_Integer_Array(V : Integer_Vectors.Vector) return Integer_Array;
Run Code Online (Sandbox Code Playgroud)
到目前为止我所拥有的
从概念上讲,这似乎很简单:
不过,第 1 步让我很头疼。我努力了:
function To_Integer_Array(V: Integer_Vectors.Vector) return Integer_Array is
Temp_Arr: Integer_Array(1..V.Length);
begin
-- Todo: copy values here
return Temp_Arr;
end To_Integer_Array;
Run Code Online (Sandbox Code Playgroud)
这会抛出
expected type "Standard.Integer"
found type "Ada.Containers.Count_Type"
Run Code Online (Sandbox Code Playgroud)
虽然这个错误绝对有道理,但我不确定如何解决它。
有没有办法将 Ada.Containers.Count_Type 转换为 Standard.Integer?还有另一种方法可以从 Integer_Vector 创建 …
我今天尝试用Qt运行MySQL,当我加载QMYSQL驱动程序时遇到错误.我正在运行Windows 8.1作为操作系统.这是我的应用程序的代码:
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL", "my_db_name");
db.setHostName("localhost");
db.setDatabaseName("mydb");
db.setUserName("root");
db.setPassword("testpwd1234");
if (db.open()) {
qDebug() << "Opened!";
} else {
qDebug() << "Error = " << db.lastError();
}
return a.exec();
}
Run Code Online (Sandbox Code Playgroud)
运行它时出现以下错误:
QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QMYSQL QMYSQL3 QODBC QODBC3 QPSQL QPSQL3
Run Code Online (Sandbox Code Playgroud)
我找到了上述错误的多种解决方案,但这些都不适用于我.以下是我验证/尝试的内容列表:
我发现3.,4.和5.有点奇怪,因为我希望正确安装所有内容并设置Path变量不应该要求复制这些文件.无论如何,上述建议都不适合我.
我有点沮丧,并希望得到任何帮助.
谢谢!
我目前正在使用虚幻引擎4.我到目前为止所有的初学者教程都在虚幻编辑器中完成大部分工作,并且只使用C++来扩展虚幻自动生成的所有内容.我想更深入地了解如何主要(或者如果可能)使用C++来编程Unreal.我目前的目标是,完全从代码中设置一个简单的场景.
谁有人建议好的资源?
编辑:所以在熟悉了虚幻引擎的一般概念之后,我意识到大部分游戏开发都是通过使用Blueprint进行可视化脚本编写完成的.有没有办法将脚本语言与虚幻架构连接起来,以替换或集成到Blueprint中?
我实例化了Ada.Containers.Vectors通用包,如下所示:
package My_Vectors is new Ada.Containers.Vectors(
Element_Type => My_Type,
Index_Type => Natural);
Run Code Online (Sandbox Code Playgroud)
说,我有一个向量和Standard.Natural值声明:
Foo_Vector: My_vectors.Vector;
Bar_Natural: Natural := 4;
Run Code Online (Sandbox Code Playgroud)
如果我打电话
Foo_Vector.Set_Length(Bar_Natural);
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
expected type "Ada.Containers.Count_Type"
found type "Standard.Natural"
Run Code Online (Sandbox Code Playgroud)
有没有办法将Bar_Natural转换为Ada.Containers.Count_Type?
c++ ×4
qt ×3
ada ×2
database ×2
mysql ×2
opengl ×2
python ×2
arrays ×1
containers ×1
dll ×1
glsl ×1
gstreamer ×1
opencv ×1
oracle ×1
python-3.x ×1
scripting ×1
sqlalchemy ×1
tessellation ×1
vector ×1