0
나는 작은 테이블이 : 나는 SQL 쿼리와 레코드를 삽입 할 수 있습니다사용자 정의 장고 진 필드 및 SQL 서버 2008
CREATE TABLE [organization_division] (
[id] int IDENTITY (1, 1) NOT NULL PRIMARY KEY,
[uuid] binary(16) NOT NULL
)
:
이INSERT INTO [organization_division] ([uuid]) VALUES (0x244c71c6c9444f38b67ab1dcfbb5fc32)
이 테이블에 대한 장고 모델은 다음과 같습니다
를from apps.lib.fields import GUIDField
class Division(models.Model):
uuid = GUIDField()
GUIDField가 사용자 정의 필드를 만드는 나의 시도입니다.
class GUIDField(models.Field):
description = "GUID binary field"
__metaclass__ = models.SubfieldBase
def __init__(self, *args, **kwargs):
kwargs['max_length'] = 16
super(GUIDField, self).__init__(*args, **kwargs)
def db_type(self, connection):
return 'binary(16)'
ORM 인스턴스의 16 진수 2 진 데이터를 데이터베이스에 전달해야합니다. 대부분의 경우 SQL 서버 측에 0x이 따르는 따옴표없는 문자열을 가져야합니다. 그러나 어떻게?
저는 unixodbc, pyodbc, django-odbc를 사용하고 있습니다.
안녕하세요, 내가 MySQL을 유사한 문제에 직면,하지만 내가 원하는 MongoDB에 의해 생성 된 12byte 사용자 ID를 저장하는 데 사용되는 장고 단지 바이너리 필드 모델로하고있다. 이 방법이 내 경우에 적합한가요? 감사. –
왜 안 되니? mysql 및 데이터베이스 드라이버에 따라 get_db_prep_value 및 db_type 함수의 코드를 수정하십시오. –
현재 작동 중입니다. pyodbc.BINARY 대신 MySQLdb.escape_string을 사용하면 저수준 mysqldb lib가 16 진수 문자열을 인식하고 db의 이진 열로 올바르게 업데이트 할 수 있습니다. –