tôi có thể tạo ra một bảng tạm thời theo cách này:tạo ra một bảng tạm thời từ một truy vấn sử dụng SQLAlchemy ORM
session.execute("CREATE TABLE temptable SELECT existingtable.id, "
"existingtable.column2 FROM existingtable WHERE existingtable.id<100000")
nhưng bảng mới không thể đọc được vì nó nói nó không có khóa chính. existingtable.id
là khóa chính của exisitingtable, vì vậy tôi mong đợi nó để có được điều trị tương tự trong bảng tạm thời.
Tuy nhiên, tôi thà tìm cách nào đó để thực hiện điều này. Đưa ra:
temp_table = Table('temptable', metadata,
Column('id', Integer, primary_key=True),
Column('column2', Integer),
useexisting=True)
class TempTable(object):
pass
mapper(TempTable, temp_table)
temp_table.create(bind=session.bind, checkfirst=True)
if session.query(TempTable).delete(): #make sure it's empty
session.commit()
Làm thế nào tôi có thể cư temp_table
với một số nội dung được lựa chọn của existingtable
mà không làm 100000 session.query.add(TempTable(...))
lệnh? Hoặc là có một cách để tạo bảng từ một truy vấn tương tự như phiên bản SQL đơn giản ở trên?
Chỉ curios .. nó sẽ làm việc nếu bạn tạo định nghĩa của bảng temp với cách tiếp cận đầu tiên? ví dụ tạo bảng tablename (id primarykey, column1) Chèn vào tablename select id, column2 từ bảng hiện tại, nơi ... – AJP
@AJP Vâng, tôi nghĩ đây là câu trả lời. Thật không may, không có SA ORM tương đương với INSERT INTO và không có cách nào dễ dàng để tôi biên dịch truy vấn tương đối phức tạp của tôi thành một câu lệnh sql. – Paul