có ai có ví dụ về cách sử dụng BLOB trong SQLAlchemy không?Ví dụ sử dụng BLOB trong SQLAlchemy
Kính trọng, Steve
có ai có ví dụ về cách sử dụng BLOB trong SQLAlchemy không?Ví dụ sử dụng BLOB trong SQLAlchemy
Kính trọng, Steve
from sqlalchemy import *
from sqlalchemy.orm import mapper, sessionmaker
import os
engine = create_engine('sqlite://', echo=True)
metadata = MetaData(engine)
sample = Table(
'sample', metadata,
Column('id', Integer, primary_key=True),
Column('lob', Binary),
)
class Sample(object):
def __init__(self, lob):
self.lob = lob
mapper(Sample, sample)
metadata.create_all()
session = sessionmaker(engine)()
# Creating new object
blob = os.urandom(100000)
obj = Sample(lob=blob)
session.add(obj)
session.commit()
obj_id = obj.id
session.expunge_all()
# Retrieving existing object
obj = session.query(Sample).get(obj_id)
assert obj.lob==blob
from sqlalchemy import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from struct import *
_DeclarativeBase = declarative_base()
class MyTable(_DeclarativeBase):
__tablename__ = 'mytable'
id = Column(Integer, Sequence('my_table_id_seq'), primary_key=True)
my_blob = Column(BLOB)
DB_NAME = 'sqlite:///C:/BlobbingTest.db'
db = create_engine(DB_NAME)
#self.__db.echo = True
_DeclarativeBase.metadata.create_all(db)
Session = sessionmaker(bind=db)
session = Session()
session.add(MyTable(my_blob=pack('H', 365)))
l = [n + 1 for n in xrange(10)]
session.add(MyTable(my_blob=pack('H'*len(l), *l)))
session.commit()
query = session.query(MyTable)
for mt in query.all():
print unpack('H'*(len(mt.my_blob)/2), mt.my_blob)
Ưu điểm của việc sử dụng gói. +1 – pylover
Từ Binary tài liệu dường như con đường để đi: http://docs.sqlalchemy.org/en/latest/dialects/mysql.html
lớp sqlalchemy.dialects.mysql.BLOB (chiều dài = Không) Căn cứ: sqlalchemy.types.LargeBinary
Loại BLOB SQL.
init (length = None) Tạo một loại LargeBinary.
Tham số: độ dài - tùy chọn, độ dài cho cột để sử dụng trong các tuyên bố DDL , cho các loại BLOB chấp nhận độ dài (ví dụ: MySQL). Nó không tạo ra kiểu BINARY/VARBINARY có độ dài - sử dụng các kiểu nhị phân/BẢNG CHỌN đặc biệt cho những loại này. Có thể được bỏ qua một cách an toàn nếu không có TẠO TẠO sẽ được phát hành. Một số cơ sở dữ liệu có thể yêu cầu chiều dài để sử dụng trong DDL và sẽ tăng ngoại lệ khi CREATE BẢNG DDL được phát hành.
Tôi muốn xem ví dụ, hoạt động không có orm. Tôi đoán trong trường hợp đó bạn cần phải bằng cách nào đó quấn các giá trị blob thông qua để Connection.execute. –