这是一个非常常见的问题,但我无法得到工作的答案.这是我的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<log4net>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="CraneUserInterface.log" />
<appendToFile value="true" />
<maxSizeRollBackups value="90" />
<rollingStyle value="Size" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFile" />
</root>
Run Code Online (Sandbox Code Playgroud)
But I need to determine the actual logging file name at run time. I found a nice example here, but when I try to loop through the collection returned by the call to GetIterators(), I find that that collection is empty.
I …
使用dictConfig设置Python日志记录的示例显示了在Python脚本中创建的字典.我想使用配置文件,但是文档说fileConfig比dictConfig更老,能力更低.可以从配置文件中设置dictConfig吗?
非常感谢你.
我正在努力使用通过COM使用ADODB类的Python脚本.我得出结论,pyodbc模块对我的目的更好.但是,我在ADodbc中没有看到ADODB.Recordset.Open()方法中提供的选项.
ADODB.Recordset.Open()有五个参数:查询字符串,数据库连接,游标类型,锁类型以及文本和执行选项的位掩码.通常,我们指定动态游标(游标类型2),乐观锁定(锁定类型3)和没有特殊执行选项的查询字符串(选项值1).Open()方法中还有另一个不受控制的选项:光标位置.在调用Open()之前,记录集的CursorLocation属性可以设置为adUseServer(值未知)或adUseClient(3,如果我没记错的话).
虽然我知道我的公司在任何可能无关紧要的代码中都没有实例,但通过pyodbc做出这些选择仍然是件好事.这些选择将在哪里进行?
我正在将数据从一个PostgreSQL v10表复制到另一个。目标表具有几个外键约束。即使外键约束所引用的表都没有任何数据,我也没有得到任何错误,这让我感到惊讶。
在执行复制之前,我曾经DISABLE TRIGGER ALL确保不会触发在目标表上定义的触发器。我很惊讶复制成功。之后ENABLE TRIGGER ALL,我尝试添加另一行,即现有行的副本。失败并违反了外键约束。然后我做了DISABLE TRIGGER ALL,尝试添加新行,然后成功。
我得出的结论是,在PostgreSQL 10中,DISABLE TRIGGER ALL将禁用外键约束检查。那是预期的行为吗?
详细信息可以在这里找到。
我正在阅读 Adam Freeman 的书“Pro ASP.Net Core 3”。我已经了解了 https 的介绍。他指示我们使用 Powershell 并运行命令“dotnet dev-certs https --clean”,然后运行“dotnet dev-certs https --trust”。当我运行 clean 命令时,我收到一条消息“HTTPS 开发证书已成功从机器中删除”。但是当我运行 trust 命令时,我得到:
“未找到具有可跨安全分区访问的密钥的有效 HTTPS 证书。将运行以下命令来修复它:'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9' 此命令将使证书密钥可跨安全分区访问,并可能提示您输入密码。有关详细信息,请参阅: https //aka.ms/aspnetcore/2.1/troubleshootcertissues 未找到具有跨安全分区可访问密钥的有效 HTTPS 证书。将运行以下命令来修复它:'sudo security set-key-partition-list -D localhost -S unsigned:,teamid:UBF8T346G9' 此命令将使证书密钥跨安全分区访问,并可能提示您输入密码。对于更多信息见:https://aka.ms/aspnetcore/3.1/troubleshootcertissues 请求信任 HTTPS 开发证书。如果以前不信任该证书,则会显示确认提示。在提示上单击“是”以信任证书。信任 HTTPS 开发人员证书时出错。”
如果我只是尝试运行“dotnet dev-certs https”,我会得到“一个有效的 HTTPS 证书已经存在”。
我尝试以管理员身份运行 powershell,但我遇到了同样的错误。
这本书说我可能会得到几个对话框,但我没有得到它们。
dotnet --version 给了我 3.1.200。
我需要做什么才能使证书生效?
也许C#中最神秘的事情是Exception类的message属性是只读的.可能是因为我不明白这个的原因,当我尝试创建从Exception派生的合理异常类时,我感到很沮丧.
例如(实际上我正在尝试做的事情),我想在尝试连接OPC服务器时创建异常.如果尝试失败,则会引发OPCException类型的对象,但我想向用户提供更多信息.所以,我有一个名为OPCCaException的类,它接受三个参数:原始异常的返回代码,服务器名称和主机名.
public class OPCCaException : Exception
{
public OPCCaException(ReturnCode returnCode, string serverName, string nodeName)
{
if (nodeName == "")
{
this.Message = "Failed to connect to OPC server "+ serverName +
": " + TranslateReturnCode()";
}
else
{
this.Message = "Failed to connect to OPC server "+ serverName +
" on node " + nodeName +
": " + TranslateReturnCode()";
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这是一个非常合理的事情,但它不会编译,因为Message属性是只读的.设置消息的唯一方法是将其传递给基类构造函数.为什么我不能在派生类的构造函数中设置它?我能想到对参数进行任何处理的唯一方法是创建一个静态类来构建消息:
public class OPCCaException : Exception
{
private static string BuildMessage(<some arguments>)
{
string message = …Run Code Online (Sandbox Code Playgroud) 不知何故,我将Visual Studio 2012安装中的工具箱移离了显示器左边缘的默认位置.我已经习惯了它,我想把它放回去,但我没有办法做到这一点.我怎么能在那里得到它?
非常感谢!
我有一种方法可以自动创建包装数据库表的 Python 类,类成员与表中的字段同名。类文件如下所示:
class CpsaUpldBuildChrgResultSet(Recordset):
def __init__(self, connection):
super().__init__(connection)
self.DefaultTableName = 'cpsa_upld_build_chrg_result'
self._keyFields.append('j_trans_seq')
self._keyFields.append('j_index')
@property
def j_trans_seq(self):
return self.GetValue('j_trans_seq')
@j_trans_seq.setter
def j_trans_seq(self, value):
self.SetKeyValue('j_trans_seq', value)
@property
def j_index(self):
return self.GetValue('j_index')
@j_index.setter
def j_index(self, value):
self.SetKeyValue('j_index', value)
Run Code Online (Sandbox Code Playgroud)
我刚刚发现,如果我尝试为不存在的类成员(例如 J_TRANS_SEQ)设置值,则不会引发异常。有什么我可以添加到这个类中的,以便尝试访问不存在的成员会引发异常?
我刚刚在另一个 StackOverflow 问题中看到了一个简单的例子,它使用游标循环遍历表格。我只是循环遍历选择查询的结果,而不是将选择查询包装在游标中。使用游标有什么好处?
(我不能在这里包含这个例子,因为 StackOverflow 认为我的问题主要是代码,并要求更多细节。我以前遇到过那个烦人的限制。如果我能用几句话清楚地提出我的问题,我应该能够到。我会看看是否可以找到该问题的链接,如果可以,我将在此处添加链接。)
这是我看到使用 CURSOR 的原始问题。
我们正处于将代码从C++转换为C#的项目的最开始.一位同事提出了一个包含List<T>成员的列表类.他并非衍生出来,List<T>因为在允许将项目添加到列表之前,他需要进行一些验证.
有一段时间,我认为派生自定义列表CollectionBase可能会有所帮助,但我认为CollectionBase现在已经过时,因为我们有泛型类.我在这里发现的一篇文章说,具有类似问题的用户应该从List <T> 派生并在派生类中执行验证,但它没有说明如何做到这一点.
例如,假设我想要一个只包含偶数整数的列表.在将其添加到列表之前,我将如何实现一个确保整数为止的检查?
当我尝试使用基本类的属性访问时,我得到一个异常super(),但是当我明确使用基类名时.这是派生类:
from CPSA_TransactionLogOutSet import CPSA_TransactionLogOutSet
class CPSA_TransactionFailureSet(CPSA_TransactionLogOutSet):
def __init__(self, connection, failedTransactionKey):
super().__init__(connection)
CPSA_TransactionLogOutSet.C_TRANS_TYP = "TRANS_FAIL"
super().C_TRANS_TYP = "TRANS_FAIL"
super().DefaultTableName = 'CPSA_TRANSACTION_LOG_IN'
super()._keyFields.append('J_TRANS_SEQ')
Run Code Online (Sandbox Code Playgroud)
但尝试创建实例会引发AttributeError异常:
AttributeError: 'super' object has no attribute 'C_TRANS_TYP'
Run Code Online (Sandbox Code Playgroud)
基类由一个__init__()方法和一组属性组成,这里只显示其中一个:
class CPSA_TransactionLogOutSet(Recordset):
def __init__(self, connection):
super().__init__(connection)
self.DefaultTableName = 'CPSA_TRANSACTION_LOG_OUT'
@property
def C_TRANS_TYP(self):
return self.GetValue('C_TRANS_TYP')
@C_TRANS_TYP.setter
def C_TRANS_TYP(self, value):
self.SetValue('C_TRANS_TYP', value)
Run Code Online (Sandbox Code Playgroud)
为什么我不能super()用来访问该C_TRANS_TYP物业?
我需要将 PostgreSQL 表中的数据获取到 SQLite 表中。我正在将数据从 PostgreSQL 导出到 CSV 文件中,然后尝试从命令行提示符将其导入到 SQLite 中。首先我尝试了这个:
c:> /sqlite3/sqlite3 sample.trd ".import source_file.csv trend_data"
对于文件中的每一行,我收到一条错误消息,指出 SQLite 需要三个值,但实际上只有一个。这并不奇怪,因为我从未告诉 SQLite 该文件是 CSV 文件。然后我尝试了这个:
c:> /sqlite3/sqlite3 sample.trd ".mode csv .import source_file.csv trend_data"
我没有收到任何错误,但也没有收到任何数据。