Cách tạo bảng bằng cách sử dụng lớp khai báo ORM không có khóa chính? Không thể khởi động nếu tôi không tạo bất kỳ cột nào là primary_key = True
.Tuyên bố SQLAlchemy: bảng không có bất kỳ khóa chính nào?
Trả lời
SQLAlchemy lõi không phàn nàn về thiếu khóa chính, vì vậy có thể tạo bảng như vậy với Table(…)
. Nhưng ORM theo thiết kế yêu cầu một cách để xác định hàng tương ứng với đối tượng, do đó không thể sử dụng bảng không có khóa chính trong ORM.
Tại sao bạn cần thêm chỉ mục này sau? Đó có phải là yêu cầu thực sự hoặc một nỗ lực để giải quyết một số vấn đề mà có lẽ có thể được giải quyết theo cách khác? Trong trường hợp bạn cần khóa chính kết hợp, có thể xác định nó bằng đối số primary_key=True
trong một số Column
s hoặc bằng cách chỉ định PrimaryKeyConstraint(…)
trong __table_args__
.
Tôi dự định tạo chỉ mục nhiều cột. Và nó sẽ là tuyệt vời nếu tôi có thể tuyên bố rõ ràng rằng chỉ mục phải được xây dựng bằng cách sử dụng BTREE (cơ sở dữ liệu của tôi là MySQL). Bất kỳ giải pháp? – Determinant
Hầu hết các cơ sở dữ liệu (kể cả MySQL) đều sử dụng B-Tree theo mặc định, vì vậy chỉ cần chỉ định 'primary_key = True' trong tất cả' Column's tham gia vào chỉ mục tổng hợp. Rõ ràng đặc tả B-Tree (hoặc loại khác) được hỗ trợ trong 'Index (…)' ví dụ cho PostgreSQL, nhưng không phải cho MySQL và không phải trong 'PrimaryKeyConstraint'. Hình như thiếu tính năng trong SQLAlchemy. –
bạn cũng có thể đặt danh sách các cột là "chính" trong đối số "primary_key" để ánh xạ(), với khai báo '__mapper_args__ = {" primary_key ": (col1, col2)}}' – zzzeek
- 1. Thread.CurrentPrincipal tuyên bố không chính xác là bất kỳ
- 2. Tuyên bố Khóa C#
- 3. SQLAlchemy một-nhiều mà không có bảng con có khóa chính
- 4. Python sqlalchemy: bảng không có khóa chính và giá trị trùng lặp?
- 5. Có một tuyên bố khóa trong VB.NET không?
- 6. sqlalchemy: mối quan hệ một-một với tuyên bố
- 7. biến tuyên bố mà không cần bất kỳ kiểu dữ liệu trong c
- 8. sqlalchemy ORM: cách khai báo một lớp bảng có chứa khóa chính nhiều cột?
- 9. Tuyên bố phương pháp "tĩnh" bất thường
- 10. Có bất kỳ phản ứng phụ nào khi trở về từ bên trong một tuyên bố không?
- 11. Mọi bảng có khóa chính không?
- 12. Tạo bảng nối không có khóa chính
- 13. Tuyên bố, tuyên bố, tuyên bố
- 14. Tuyên bố tiếp tục bất hợp pháp?
- 15. Thực thể JPA cho một bảng không có khóa chính
- 16. Làm bất kỳ ORM Python nào (SQLAlchemy?) Có hoạt động với Google App Engine không?
- 17. tuyên bố khóa không xuất hiện để được làm việc
- 18. Recursive/khóa lồng nhau trong C# với tuyên bố khóa
- 19. Làm cách nào để lấy khóa chính của bất kỳ thực thể JPA nào?
- 20. Tại sao không có tuyên bố so sánh trong javascript 'if ... else ...' tuyên bố này
- 21. SQLAlchemy Lấy khóa chính với Autoincrement trước khi Commit
- 22. Tuyên bố SQLAlchemy: xác định trình kích hoạt và chỉ mục (Postgres 9)
- 23. TSQL - tuyên bố MERGE với khóa tổng hợp
- 24. stdlib.h không có tuyên bố cho putenv
- 25. Bàn không có khóa chính
- 26. Đặt cột làm khóa chính nếu bảng không có khóa chính
- 27. Perl có loại mảng liên kết có thể có bất kỳ loại khóa nào không?
- 28. Có bất kỳ ScalaConsole nào không?
- 29. Có bất kỳ ESB .NET nào không?
- 30. Có bất kỳ sách ocsigen nào không?
tôi có thể hỏi, tại sao bạn muốn làm một điều như vậy? –
@JonathanOng Bởi vì tôi muốn thêm một số chỉ mục sau này, và có vẻ như mysql có thể làm một cái gì đó như thế này. – Determinant