<jupyter_start><jupyter_text>Assign to rs the results from the following query: select all the records, extracting the Title of the record and Name of the artist of each record from the Album table and the Artist table, respectively. To do so, INNER JOIN these two tables on the ArtistID column of both.<jupyter_code># Open engine in context manager
# Perform query and save results to DataFrame: df
with engine.connect() as con:
    rs = con.execute("Select Title, Name FROM Album INNER JOIN Artist on Album.ArtistID=Artist.ArtistID")
    df=pd.DataFrame(rs.fetchall())
    df.columns=rs.keys()
#* must ""
#* select , from x INNER JOIN Y on x.a=y.a
# name must be correct
# Print head of DataFrame df
print(df.head())<jupyter_output>Title       Name
0  For Those About To Rock We Salute You      AC/DC
1                      Balls to the Wall     Accept
2                      Restless and Wild     Accept
3                      Let There Be Rock      AC/DC
4                               Big Ones  Aerosmith<jupyter_text>Use the pandas function read_sql_query() to assign to the variable df the DataFrame of results from the following query: select all records from PlaylistTrack INNER JOIN Track on PlaylistTrack.TrackId = Track.TrackId that satisfy the condition Milliseconds < 250000.<jupyter_code># Execute query and store records in DataFrame: df
df=pd.read_sql_query("Select * FROM PlaylistTrack INNER JOIN Track on PlaylistTrack.TrackId = Track.TrackId WHERE Milliseconds < 250000 ",engine)
#* must pd
# Print head of DataFrame
print(df.head())<jupyter_output>PlaylistId  TrackId  TrackId              Name  AlbumId  MediaTypeId  \
0           1     3390     3390  One and the Same      271            2   
1           1     3392     3392     Until We Fall      271            2   
2           1     3393     3393     Original Fire      271            2   
3           1     3394     3394       Broken City      271            2   
4           1     3395     3395          Somedays      271            2   

   GenreId Composer  Milliseconds    Bytes  UnitPrice  
0       23     None        217732  3559040       0.99  
1       23     None        230758  3766605       0.99  
2       23     None        218916  3577821       0.99  
3       23     None        228366  3728955       0.99  
4       23     None        213831  3497176       0.99
{'fraction_non_alphanumeric': 0.04423649510846448, 'fraction_numerical': 0.07741386643981285, 'mean_word_length': 1.8788249694002448, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 7, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '2', 'dir': 'jupyter-structured-clean-dedup', 'id': '107855', 'license': 'MIT', 'n_tokens_mistral': 756, 'n_tokens_neox': 655, 'n_words': 276, 'path': 'import data part 1/The power of SQL lies in relationships between tables INNER JOIN.ipynb', 'repo_name': 'nazmus-shakib-mist-ipe02/Importing-Cleaning-Data-with-Python', 'size': '2351'}