[sqlalchemy] Exception: Instance %s has a NULL identity key
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 35/100
Hướng nghiên cứu
Bắt đầu bằng cách chạy test_insert_row_autogenerate được cung cấp với các fixture fix_session và databricks_engine, sau đó lần theo hành vi insert và flush tạo ra khóa identity NULL. Hoàn thành khi hàng mẫu được chèn thành công và identity bigint được tự động tạo có sẵn khi truy vấn hàng đó.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
I cant get autogenerated identity columns to work.
The table is created just fine, but sqlalchelmy cant insert any rows
Error:
sqlalchemy.orm.exc.FlushError: Instance <SampleObject at 0x7fc694ddbd90> has a NULL identity key. If this is an auto-generated value, check that the database table allows generation of new primary key values, and that the mapped Column object is configured to expect these generated values. Ensure also that this flush() is not occurring at an inappropriate time, such as within a load() event.
Sample code:
from sqlalchemy import create_engine, text, Column, BigInteger, String, Identity
from sqlalchemy.orm import Session, DeclarativeBase
from sample import databricks_engine
@pytest.fixture()
def fix_session():
engine = databricks_engine()
try:
with Session(engine) as session:
Base.metadata.create_all(engine)
yield session
finally:
with Session(engine) as session:
rollback_query_kopf = text("DROP TABLE dummy")
session.execute(rollback_query_kopf)
session.commit()
class Base(DeclarativeBase):
pass
class SampleObject(Base):
__tablename__ = "dummy"
bigint_col = Column(
BigInteger, primary_key=True, server_default=Identity(), autoincrement="auto"
)
str_col = Column(String)
def test_insert_row_autogenerate(fix_session):
sample = SampleObject(str_col="test")
fix_session.add(sample)
fix_session.commit()
actual = fix_session.query(SampleObject).first()
assert actual
- Ngôn ngữ chính
- Python
- Star
- 233
- Fork
- 152
- Merge trung bình
- 21 giờ 5 phút
- Pull request đã merge (30 ngày)
- 10
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của databricks/databricks-sql-python
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
Tất cả issue của databricks/databricks-sql-python
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
PolicyEngine/policyengine-us#9559 ·
-
priority: p3
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
googleapis/librarian#7636 ·
-
from:qa priority:P2 reliability tech-debt
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
spec-kitty/spec-kitty#4874 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100