-
-
Save abrookins/91afc5adfdace1d72819b0d758cf23f4 to your computer and use it in GitHub Desktop.
import datetime | |
from typing import Optional | |
from redis_om import ( | |
EmbeddedJsonModel, | |
JsonModel, | |
Field, | |
Migrator, | |
) | |
from redis_om import get_redis_connection | |
class Address(EmbeddedJsonModel): | |
address_line_1: str | |
address_line_2: Optional[str] | |
city: str = Field(index=True) | |
state: str = Field(index=True) | |
country: str | |
postal_code: str = Field(index=True) | |
class Customer(JsonModel): | |
first_name: str = Field(index=True) | |
last_name: str = Field(index=True) | |
email: str = Field(index=True) | |
join_date: datetime.date | |
age: int = Field(index=True) | |
bio: Optional[str] = Field(index=True, full_text_search=True, | |
default="") | |
# Creates an embedded model. | |
address: Address | |
# With these two models and a Redis deployment with the RedisJSON | |
# and RediSearch modules installed, we can run queries like the | |
# following. | |
# Before running queries, we need to run migrations to set up the | |
# indexes that Redis OM will use. You can also use the `migrate` | |
# CLI tool for this! | |
redis = get_redis_connection() | |
Migrator(redis).run() | |
# Find all customers who live in San Antonio, TX | |
Customer.find(Customer.address.city == "San Antonio", | |
Customer.address.state == "TX") |
Hey, thanks for sharing this! 🙌 I've moved on from this project but I'll make sure the team knows.
Hi All,
I am getting the above error when using a remote redis instance.
Traceback (most recent call last):
File "/Users/austinward/activeresource/redis_om_test.py", line 44, in
Migrator(redis.class).run()
File "/Users/austinward/.pyenv/versions/3.9.10/lib/python3.9/site-packages/redi
s_om/model/migrations/migrator.py", line 156, in run
self.detect_migrations()
File "/Users/austinward/.pyenv/versions/3.9.10/lib/python3.9/site-packages/redi
s_om/model/migrations/migrator.py", line 94, in detect_migrations
import_submodules(self.module)
File "/Users/austinward/.pyenv/versions/3.9.10/lib/python3.9/site-packages/redi
s_om/model/migrations/migrator.py", line 24, in import_submodules
root_module = importlib.import_module(root_module_name)
File "/Users/austinward/.pyenv/versions/3.9.10/lib/python3.9/importlib/init
.py", line 118, in import_module
if name.startswith('.'):
AttributeError: type object 'Redis' has no attribute 'startswith'
Please let me know the resolution.
Thanks in Advance.
@chakri622 change to Migrate().run() it will work . Error is that Migrator expects a optional python package to load in background but we are providing redis connection which is not a python package . Its optional and no need to send anything for Migrator just leave it as Migrator().run() .
Hi Andrew! Just finished reading this article and started setting up Redis OM, and it's so awesome! Ran into an error during setup and I wanted to share the fix here so it's reflected in the article for future readers.
Looking at this documentation, I think the code on line 43 may be outdated.
I received the following error when running this on my local