How to use SQLAlchemy ORM to access Google Translate Data in Python
The rich ecosystem of Python modules lets you get to work quickly and integrate your systems effectively. With the CData API Driver for Python and the SQLAlchemy toolkit, you can build Google Translate-connected Python applications and scripts. This article shows how to use SQLAlchemy to connect to Google Translate data to query Google Translate data.
With built-in optimized data processing, the CData Python Connector offers unmatched performance for interacting with live Google Translate data in Python. When you issue complex SQL queries from Google Translate, the CData Connector pushes supported SQL operations, like filters and aggregations, directly to Google Translate and utilizes the embedded SQL engine to process unsupported operations client-side (often SQL functions and JOIN operations).
Connecting to Google Translate Data
Connecting to Google Translate data looks just like connecting to any relational data source. Create a connection string using the required connection properties. For this article, you will pass the connection string as a parameter to the create_engine function.
Authentication
Google Cloud Translation API requires OAuth 2.0 authentication to ensure secure access to translation services, datasets, glossaries, and adaptive MT resources. This authentication method allows you to securely connect to your Google Cloud project and manage translation resources with proper authorization.
OAuth 2.0 Setup and Configuration
Step 1: Create Google Cloud Project and Enable API
To set up OAuth authentication:
- Visit the Google Cloud Console
- Create a new project or select an existing project
- Note down your Project ID (required for all API calls)
- Navigate to "APIs & Services" > "Library"
- Search for and enable the "Cloud Translation API"
- Go to "APIs & Services" > "Credentials"
- Click "Create Credentials" and select "OAuth Client ID"
- Configure the OAuth consent screen if prompted
- Select "Desktop application" or "Web application" as appropriate
- Set the authorized redirect URI (CallbackURL)
- Copy the Client ID and Client Secret for use in your connection
Required Connection Properties
- AuthScheme: Set this to OAuth (required)
- OAuthClientId: Client ID from Google Cloud Console (required)
- OAuthClientSecret: Client secret from Google Cloud Console (required)
- CallbackURL: Redirect URI specified in your OAuth application (required)
- InitiateOAuth: Set to GETANDREFRESH for automatic token management (recommended)
- ProjectId: Your Google Cloud project ID or project number (required for queries)
Required OAuth Scopes
The Google Cloud Translation API Profile requires the following OAuth scope:
- https://www.googleapis.com/auth/cloud-translation - Full access to Cloud Translation API resources including translation, datasets, glossaries, and adaptive MT
Follow the procedure below to install SQLAlchemy and start accessing Google Translate through Python objects.
Install Required Modules
Use the pip utility to install the SQLAlchemy toolkit and SQLAlchemy ORM package:
pip install sqlalchemy pip install sqlalchemy.orm
Be sure to import the appropriate modules:
from sqlalchemy import create_engine, String, Column from sqlalchemy.ext.declarative import declarative_base from sqlalchemy.orm import sessionmaker
Model Google Translate Data in Python
You can now connect with a connection string. Use the create_engine function to create an Engine for working with Google Translate data.
NOTE: Users should URL encode the any connection string properties that include special characters. For more information, refer to the SQL Alchemy documentation.
engine = create_engine("api:///?Profile=C:\profiles\GoogleTranslate.apip&AuthScheme=OAuth&InitiateOAuth=GETANDREFRESH&OAuthClientId=your_client_id&OAuthClientSecret=your_client_secret&CallbackUrl=your_callback_url")
Declare a Mapping Class for Google Translate Data
After establishing the connection, declare a mapping class for the table you wish to model in the ORM (in this article, we will model the SupportedLanguages table). Use the sqlalchemy.ext.declarative.declarative_base function and create a new class with some or all of the fields (columns) defined.
base = declarative_base() class SupportedLanguages(base): __tablename__ = "SupportedLanguages" LanguageCode = Column(String,primary_key=True) DisplayName = Column(String) ...
Query Google Translate Data
With the mapping class prepared, you can use a session object to query the data source. After binding the Engine to the session, provide the mapping class to the session query method.
Using the query Method
engine = create_engine("api:///?Profile=C:\profiles\GoogleTranslate.apip&AuthScheme=OAuth&InitiateOAuth=GETANDREFRESH&OAuthClientId=your_client_id&OAuthClientSecret=your_client_secret&CallbackUrl=your_callback_url")
factory = sessionmaker(bind=engine)
session = factory()
for instance in session.query(SupportedLanguages).filter_by(ProjectId="my-project-12345"):
print("LanguageCode: ", instance.LanguageCode)
print("DisplayName: ", instance.DisplayName)
print("---------")
Alternatively, you can use the execute method with the appropriate table object. The code below works with an active session.
Using the execute Method
SupportedLanguages_table = SupportedLanguages.metadata.tables["SupportedLanguages"]
for instance in session.execute(SupportedLanguages_table.select().where(SupportedLanguages_table.c.ProjectId == "my-project-12345")):
print("LanguageCode: ", instance.LanguageCode)
print("DisplayName: ", instance.DisplayName)
print("---------")
For examples of more complex querying, including JOINs, aggregations, limits, and more, refer to the Help documentation for the extension.
Free Trial & More Information
Download a free, 30-day trial of the CData API Driver for Python to start building Python apps and scripts with connectivity to Google Translate data. Reach out to our Support Team if you have any questions.