2011-05-10 4 views
0

psycopg2를 사용하여 재 배열에서 많은 양의 데이터를 포스트그레스로 가져 오는 가장 좋은 방법, 즉 최소한의 코딩 방법을 알고 싶습니다. 나는 캐스트를 사용하는 몇 가지 물건을 보았지만 실제로는 그것이 해협이 될 것이라고 생각했으며 웹에서 좋은 것을 찾을 수있었습니다.psycopg2를 사용하여 포스트그레스로 재 배열하기

예제에는 여러 열에 대해 서로 다른 데이터 형식으로 재 배열에서 읽은 200 개의 변수가있는 센서스 데이터가 있습니다. 열 이름과 데이터 형식을 사용하고 포스트그레스에 입력하는 방법을 살펴보고 싶습니다.

또한 psycopy2보다 나은 점이 있으면 제안에 대한 답변을드립니다.

이것이 내가 sqlight와 잘못된 길로 들어가지만 발견 한 것입니다.

elif driver=='sqlite3': 
        tups=cur.fetchall() 
        if len(tups)>0: 
          _cast = {types.BooleanType: numpy.bool, 
            types.IntType: numpy.int32, 
            types.LongType: numpy.int64, 
            types.FloatType: numpy.float64, 
            types.StringType: numpy.str, 
            types.UnicodeType: numpy.str} 
          try: 
            typelist=[_cast[type(tmp)] for tmp in tups[0]] 
          except KeyError: 
            raise Exception("Unknown datatype") 
          res = numpy.core.records.array(tups) 
        else: 
          return None 
      res=[res[tmp] for tmp in res.dtype.names] 
    except BaseException: 

답변

2

Psycopg가하거나 새 typecaster (당신은 포스트 그레스에서 읽고 파이썬 객체를 취득하고자 할 때) (당신이 포스트 그레스에 파이썬 객체를 전달하려는 경우) 새로운 어댑터를 사용하여 확장 할 수 있습니다. 당신이 NumPy와 유형에 대한 기존 어댑터의 일부는 register에 가지고있는 것처럼

그것은 예를 들어 본다 : 당신은 쿼리 매개 변수로 직접 NumPy와 유형을 사용할 수 있습니다 이러한 등록으로

>>> psycopg2.extensions.register_adapter(numpy.int32, psycopg2._psycopg.AsIs) 
>>> psycopg2.extensions.adapt(numpy.int32(42)).getquoted() 
'42' 

>>> psycopg2.extensions.register_adapter(numpy.str, psycopg2._psycopg.QuotedString) 
>>> psycopg2.extensions.adapt(numpy.str("Hi 'quote'")).getquoted() 
"'Hi ''quote'''" 

합니다.

Mailing List에 대한 자세한 내용과 도움을 얻을 수 있습니다.

+0

확인해 주셔서 감사합니다. – user531525

관련 문제