IronPython에서 생성 된 일부 클래스를 유지하기 위해 개체 데이터베이스를 사용하고 싶습니다. 데이터베이스는 db4o for .NET 2.0 (오늘 다운로드)입니다. 코드는 다음과 같습니다 : 클래스 Person
표준 .NET 클래스가 아니기 때문에IronPython에서 생성 된 개체를 개체 데이터베이스에 저장하는 방법
import clr
clr.AddReferenceToFileAndPath(r"C:\dev\Db4objects\db4o-7.12-net20\bin\net-2.0\Db4objects.Db4o.dll")
from Db4objects.Db4o import *
db = Db4oFactory.OpenFile(r'G:\IronPython\test\db4o\database.db')
class Person(object):
def __init__(self, name, age):
self.Name = name
self.Age = age
def __str__(self):
return 'Person: ' + self.Name + ' ' + str(self.Age)
p1 = Person('testp', 34)
db.Store(p1)
내가 db.Store(p1)
Unexpected char '$'
ThrowUncheckedException at offset 4 in file:line:column <filename unknown>:0:0
FatalShutdown at offset 136 in file:line:column <filename unknown>:0:0
AsTopLevelCall at offset 112 in file:line:column <filename unknown>:0:0
AsTopLevelStore at offset 34 in file:line:column <filename unknown>:0:0
StoreInternal at offset 69 in file:line:column <filename unknown>:0:0
Store at offset 66 in file:line:column <filename unknown>:0:0
Store at offset 12 in file:line:column <filename unknown>:0:0
Store at offset 15 in file:line:column <filename unknown>:0:0
v Microsoft.Scripting.Actions.Calls.MethodCandidate.Caller.CallWithInstance(Object[] args, Boolean& shouldOptimize)
v IronPython.Runtime.Types.BuiltinFunction.BuiltinMethodCaller`2.Call1(CallSite site, CodeContext context, TFuncType
func, T0 arg0)
v System.Dynamic.UpdateDelegates.UpdateAndExecute3[T0,T1,T2,TRet](CallSite site, T0 arg0, T1 arg1, T2 arg2)
v Microsoft.Scripting.Interpreter.DynamicInstruction`4.Run(InterpretedFrame frame)
v Microsoft.Scripting.Interpreter.Interpreter.Run(InterpretedFrame frame)
v Microsoft.Scripting.Interpreter.LightLambda.Run2[T0,T1,TRet](T0 arg0, T1 arg1)
v IronPython.Compiler.PythonScriptCode.RunWorker(CodeContext ctx)
v IronPython.Compiler.PythonScriptCode.Run(Scope scope)
v IronPython.Hosting.PythonCommandLine.<>c__DisplayClass1.<RunOneInteraction>b__0()
Exception: Unexpected char '$'
CLR Exception:
Exception
:
Unexpected char '$'
나는 문제가 IronPython의 그 형 시스템임을 의심에서 예외를 얻을. 나는 System.IO.FileInfo
을 지속하려고 노력했으며 잘 작동했습니다. IronPython에서 클래스의 인스턴스 인 객체를 어떻게 저장합니까?
수입의 cPickle db.Store (cPickle.dumps (P1)) 다음
및 cPickle.loads을 사용하여 (...) 가져 오는 객체 : 당신은 인스턴스를 지속 피클을 사용할 수
철 python을 사용하여이 문제를 복제 할 수 있습니까? –
.NET 어셈블리를 파이썬으로 가져 오는 방법을 모르겠습니다. (불가능하다고 생각했습니다). 그래서, 나는 현재의 지식으로 그것을 복제 할 수 없다. – stej
아마 듣고 싶은 것은 아니지만 C#으로 모델을 정의하고 IronPython 환경으로 가져올 수 있습니다. 나는 너를 어떻게 끝내는 지 알고 싶어 할 것이다. – tarn