테이블 인스턴스를 만들 때 sqlalchemy에서 기본 키 만들기

user1592380

여기에 이미지 설명 입력

다양한 선택 기준에 따라 원래 테이블의 하위 집합 인 sqllite 테이블에서 tmp 테이블을 만들었습니다. 스크린 샷에 샘플이 있습니다.

각 필드를 업데이트하기 위해 테이블 ​​레코드를 한 번에 하나씩 반복하려고합니다. 매퍼에 설명 된 문제가 발생 하여 기본 키 열을 어셈블 할 수 없습니다 . http://docs.sqlalchemy.org/en/latest/faq/ormconfiguration.html#how-do-i-map-a-table-that-has-no-primary-key 의 권장 사항을 기반으로합니다 . 이 토론을 기반으로 고유 한 ID 인 'id'열인 후보 키가 있습니다. 따라서 코드를 다음과 같이 변경했습니다.

source_table= self.source
engine = create_engine(db_path)
Base = declarative_base()
# metadata = Base.metadata
# Look up the existing tables from database
Base.metadata.reflect(engine)

# Create class that maps via ORM to the database table
table = type(source_table, (Base,), {'__tablename__': source_table}, __mapper_args__ = {
    'primary_key':'id'
})

Session = sessionmaker(bind=engine)
session = Session()
i = 0
for row in session.query(table).limit(500):

    i += 1
    print object_as_dict(row)

그러나 이것은 다음을 제공합니다.

TypeError: type() takes 1 or 3 arguments

id를 기본 키로 식별하기 위해 mapper_args 인수를 어떻게 사용할 수 있습니까?

편집하다:

나는 시도했다 :

    table = type(source_table, (Base,), {'__tablename__': source_table}, {"__mapper_args__": {"primary_key": [Base.metadata.tables[source_table].c.id]}})

기부:

TypeError: type() takes 1 or 3 arguments
우주

__mapper_args__클래스에 정의 된 속성이어야합니다. 작성해야하는 반면

class Foo(Base):
    ...
    __mapper_args__ = {...}

class구문 으로 클래스를 정의 할 때 다음과 같이 작성해야합니다.

type("Foo", (Base,), {..., "__mapper_args__": {...}})

type함수 로 클래스를 정의 할 때 .

참고 __mapper_args__해야 할 수도 있습니다

{"primary_key": [Base.metadata.tables[source_table].c.id]}

대신에

{"primary_key": "id"}

제대로 작동합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 테이블의 기본 키에 외래 키 만들기

분류에서Dev

인덱스를 만들거나 기본 키에 추가하고 새 테이블을 만드시겠습니까?

분류에서Dev

varchar를 기본 키로 사용하여 테이블 만들기

분류에서Dev

인스턴스를 만들 때 __init__에 대한 기본 호출

분류에서Dev

기본 클래스에서 인스턴스를 만들고 타이핑 유지

분류에서Dev

Flask-SQLAlchemy를 사용하여 기본 테이블 만들기

분류에서Dev

SQL Server에서 기본 키없이 기존 테이블에 기본 키 만들기

분류에서Dev

NserviceBus는 테이블을 만들 기본 DB 스키마를 변경합니다.

분류에서Dev

기본이 아닌 스키마에 시퀀스가있는 테이블을 만들 수 없습니다.

분류에서Dev

기존 테이블의 기본 키에 제약 조건, 인덱스 또는 외래 키를 만들 수 없습니다.

분류에서Dev

SQL Server에서 날짜 키를 사용하여 팩트 테이블 만들기

분류에서Dev

해시 테이블 배열의 키에서 배열 만들기

분류에서Dev

SQLAlchemy에서 사용자에 대한 새 개인 테이블 만들기

분류에서Dev

다른 테이블의 기본 키에 매핑되는 SQL 테이블에 열 만들기

분류에서Dev

hsqldb에서 둘 이상의 기본 키 만들기

분류에서Dev

두 테이블 사이에 외래 키 만들기

분류에서Dev

Python에서 인스턴스 만들기

분류에서Dev

메타 테이블을 사용하여 lua의 기본 클래스에서 인스턴스를 만들 수 없습니다.

분류에서Dev

Oracle 데이터베이스 테이블에서 json 만들기

분류에서Dev

데이터베이스에서 PHP로 테이블 만들기

분류에서Dev

기본 키없이 UPDATE 문 만들기

분류에서Dev

기존 데이터베이스에 테이블 만들기

분류에서Dev

Django 외부 테이블에 대한 외래 키 만들기

분류에서Dev

뷰를 가리키는 외부 테이블 만들기

분류에서Dev

이미 설정된 값에서 namedtuple 인스턴스 만들기

분류에서Dev

C ++에서 기본 암호를 만들 때 이상한 문자열 결과

분류에서Dev

김프 : 클립 보드에서 이미지를 만들 때 기본 DPI 설정

분류에서Dev

R 패키지를 만들 때 데이터 내보내기

분류에서Dev

C ++에서 기본이 아닌 생성자로 템플릿 인스턴스를 만들 수 있습니까?

Related 관련 기사

  1. 1

    다른 테이블의 기본 키에 외래 키 만들기

  2. 2

    인덱스를 만들거나 기본 키에 추가하고 새 테이블을 만드시겠습니까?

  3. 3

    varchar를 기본 키로 사용하여 테이블 만들기

  4. 4

    인스턴스를 만들 때 __init__에 대한 기본 호출

  5. 5

    기본 클래스에서 인스턴스를 만들고 타이핑 유지

  6. 6

    Flask-SQLAlchemy를 사용하여 기본 테이블 만들기

  7. 7

    SQL Server에서 기본 키없이 기존 테이블에 기본 키 만들기

  8. 8

    NserviceBus는 테이블을 만들 기본 DB 스키마를 변경합니다.

  9. 9

    기본이 아닌 스키마에 시퀀스가있는 테이블을 만들 수 없습니다.

  10. 10

    기존 테이블의 기본 키에 제약 조건, 인덱스 또는 외래 키를 만들 수 없습니다.

  11. 11

    SQL Server에서 날짜 키를 사용하여 팩트 테이블 만들기

  12. 12

    해시 테이블 배열의 키에서 배열 만들기

  13. 13

    SQLAlchemy에서 사용자에 대한 새 개인 테이블 만들기

  14. 14

    다른 테이블의 기본 키에 매핑되는 SQL 테이블에 열 만들기

  15. 15

    hsqldb에서 둘 이상의 기본 키 만들기

  16. 16

    두 테이블 사이에 외래 키 만들기

  17. 17

    Python에서 인스턴스 만들기

  18. 18

    메타 테이블을 사용하여 lua의 기본 클래스에서 인스턴스를 만들 수 없습니다.

  19. 19

    Oracle 데이터베이스 테이블에서 json 만들기

  20. 20

    데이터베이스에서 PHP로 테이블 만들기

  21. 21

    기본 키없이 UPDATE 문 만들기

  22. 22

    기존 데이터베이스에 테이블 만들기

  23. 23

    Django 외부 테이블에 대한 외래 키 만들기

  24. 24

    뷰를 가리키는 외부 테이블 만들기

  25. 25

    이미 설정된 값에서 namedtuple 인스턴스 만들기

  26. 26

    C ++에서 기본 암호를 만들 때 이상한 문자열 결과

  27. 27

    김프 : 클립 보드에서 이미지를 만들 때 기본 DPI 설정

  28. 28

    R 패키지를 만들 때 데이터 내보내기

  29. 29

    C ++에서 기본이 아닌 생성자로 템플릿 인스턴스를 만들 수 있습니까?

뜨겁다태그

보관