Tôi đã có một dịch vụ web nhỏ được xây dựng bằng cách sử dụng Flask
và Flask-SQLAlchemy
chỉ có một mô hình. Bây giờ tôi muốn sử dụng cùng một cơ sở dữ liệu, nhưng với một ứng dụng dòng lệnh, vì vậy tôi muốn giảm sự phụ thuộc Flask
.Sử dụng Flask-SQLAlchemy không có Flask
Mô hình của tôi trông như thế này:
class IPEntry(db.Model):
id = db.Column(db.Integer, primary_key=True)
ip_address = db.Column(db.String(16), unique=True)
first_seen = db.Column(db.DateTime(),
default = datetime.datetime.utcnow
)
last_seen = db.Column(db.DateTime(),
default = datetime.datetime.utcnow
)
@validates('ip')
def validate_ip(self, key, ip):
assert is_ip_addr(ip)
return ip
Kể từ db
sẽ không còn là một tham chiếu đến flask.ext.sqlalchemy.SQLAlchemy(app)
, làm thế nào tôi có thể chuyển đổi mô hình của tôi sử dụng chỉ SQLAlchemy. Có cách nào cho hai ứng dụng (một với Flask-SQLAlchemy
mục kia có SQLAlchemy
) để sử dụng cùng một cơ sở dữ liệu không?
Các * cơ sở dữ liệu * nên không phụ thuộc vào * mô hình * hoặc lớp ORM bạn đang sử dụng. – Makoto
Vâng, tôi hiểu rồi. Tôi đang tìm một cách để tái sử dụng mã trong cả bình và bình mà không cần phải thay đổi định nghĩa mô hình của tôi theo bất kỳ cách nào đáng kể. – amccormack
Không có gì liên quan đến bình trong mô hình của bạn. Tất cả những gì bạn cần là tạo một kết nối db và nhập mô hình của bạn vào một trong hai bình, hoặc ứng dụng không bình. Tôi chỉ đơn giản là đặt mô hình trong 'models.py' như vậy (thực sự chỉ cần di chuyển ở trên từ tập tin .py chính và nhập/khởi tạo IPentry khi cần thiết). –