Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Reading from SQL databases in Data Analysis Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the pandas library.

Data Analysis Python
import [1] as pd
Drag options to blanks, or click blank then click option'
Asqlite3
Bpandas
Csqlalchemy
Dnumpy
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'numpy' instead of 'pandas' for data frames.
Importing 'sqlite3' when pandas is needed.
2fill in blank
medium

Complete the code to create a connection to a SQLite database file named 'data.db'.

Data Analysis Python
import sqlite3
conn = sqlite3.[1]('data.db')
Drag options to blanks, or click blank then click option'
Acreate
Bopen
Cstart
Dconnect
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'open' instead of 'connect' causes an error.
Trying to use 'create' which is not a valid method here.
3fill in blank
hard

Fix the error in the code to read a SQL query into a pandas DataFrame.

Data Analysis Python
df = pd.read_sql_query([1], conn)
Drag options to blanks, or click blank then click option'
ASELECT * FROM table
B"SELECT * FROM table"
CSELECT * FROM table;
D'SELECT * FROM table'
Attempts:
3 left
💡 Hint
Common Mistakes
Writing the query without quotes causes a syntax error.
Adding a semicolon inside the string is optional but not required.
4fill in blank
hard

Fill both blanks to create a DataFrame from a SQL table named 'employees' using pandas.

Data Analysis Python
df = pd.read_sql_table([1], [2])
Drag options to blanks, or click blank then click option'
A'employees'
Bconn
C'data.db'
Dsqlite3
Attempts:
3 left
💡 Hint
Common Mistakes
Passing the database filename instead of the connection object.
Not quoting the table name string.
5fill in blank
hard

Fill all three blanks to read data from a SQL database using SQLAlchemy engine and pandas.

Data Analysis Python
from sqlalchemy import [1]
engine = [2]('sqlite:///data.db')
df = pd.read_sql([3], engine)
Drag options to blanks, or click blank then click option'
Acreate_engine
B'SELECT * FROM users'
DEngine
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Engine' instead of 'create_engine' for import or engine creation.
Passing the query without quotes.

Practice

(1/5)
1. What is the main purpose of using pandas.read_sql_query() in Python when working with SQL databases?
easy
A. To close the database connection
B. To create a new SQL database
C. To write data from a DataFrame back to the database
D. To run an SQL query and get the result as a DataFrame

Solution

  1. Step 1: Understand the function purpose

    pandas.read_sql_query() runs an SQL query on a database connection and returns the result as a pandas DataFrame.
  2. Step 2: Compare options with function use

    Creating databases, closing connections, or writing data are not done by this function.
  3. Final Answer:

    To run an SQL query and get the result as a DataFrame -> Option D
  4. Quick Check:

    read_sql_query() = runs query and returns DataFrame [OK]
Hint: Remember: read_sql_query fetches data as DataFrame [OK]
Common Mistakes:
  • Thinking it creates or modifies the database
  • Confusing it with connection closing functions
  • Assuming it writes data back to the database
2. Which of the following is the correct way to open a connection to a SQLite database file named data.db using Python's sqlite3 module?
easy
A. conn = sqlite3.open('data.db')
B. conn = sqlite3.connect('data.db')
C. conn = sqlite3.start('data.db')
D. conn = sqlite3.create('data.db')

Solution

  1. Step 1: Recall sqlite3 connection syntax

    The correct method to open a connection is sqlite3.connect() with the database filename as argument.
  2. Step 2: Check other options

    Methods like open, start, or create do not exist in sqlite3 for opening connections.
  3. Final Answer:

    conn = sqlite3.connect('data.db') -> Option B
  4. Quick Check:

    sqlite3.connect() opens DB connection [OK]
Hint: Use connect() to open SQLite DB connections [OK]
Common Mistakes:
  • Using non-existent methods like open() or start()
  • Confusing connect() with create()
  • Forgetting to pass the database filename as a string
3. Given the following code, what will be the output?
import sqlite3
import pandas as pd
conn = sqlite3.connect(':memory:')
cursor = conn.cursor()
cursor.execute('CREATE TABLE users (id INTEGER, name TEXT)')
cursor.execute("INSERT INTO users VALUES (1, 'Alice')")
cursor.execute("INSERT INTO users VALUES (2, 'Bob')")
df = pd.read_sql_query('SELECT * FROM users WHERE id = 2', conn)
print(df)
medium
A. id name 0 2 Bob
B. id name 0 1 Alice
C. Empty DataFrame with columns [id, name]
D. SyntaxError due to SQL query

Solution

  1. Step 1: Understand the SQL query

    The query selects rows from 'users' where id equals 2, so only Bob's row matches.
  2. Step 2: Check DataFrame output

    The DataFrame will have one row with id=2 and name='Bob'.
  3. Final Answer:

    id name 0 2 Bob -> Option A
  4. Quick Check:

    SELECT * WHERE id=2 returns Bob [OK]
Hint: Filter by id=2 returns Bob's row only [OK]
Common Mistakes:
  • Confusing id=1 with id=2
  • Expecting all rows instead of filtered
  • Thinking the query has syntax errors
4. What is wrong with this code snippet for reading data from a SQLite database?
import sqlite3
import pandas as pd
conn = sqlite3.connect('mydb.db')
df = pd.read_sql_query('SELECT * FROM sales', conn)
conn.close()
print(df.head())
print(conn.execute('SELECT * FROM sales'))
medium
A. Trying to execute a query after closing the connection causes an error
B. The SQL query syntax is incorrect
C. pandas.read_sql_query() cannot read from SQLite databases
D. The connection is never closed

Solution

  1. Step 1: Identify connection usage

    The connection is closed with conn.close() before the last execute call.
  2. Step 2: Understand error cause

    After closing, trying to run conn.execute() causes a runtime error because the connection is no longer open.
  3. Final Answer:

    Trying to execute a query after closing the connection causes an error -> Option A
  4. Quick Check:

    Closed connection cannot execute queries [OK]
Hint: Don't use connection after closing it [OK]
Common Mistakes:
  • Assuming queries work after closing connection
  • Thinking SQL syntax is wrong here
  • Believing pandas can't read SQLite data
5. You want to read data from a SQL database and filter rows where the column age is greater than 30. Which of the following code snippets correctly does this and returns a pandas DataFrame?
hard
A. df = pd.read_sql_query('SELECT * FROM users WHERE age > 30', 'conn')
B. df = pd.read_sql_query('SELECT * FROM users WHERE age => 30', conn)
C. df = pd.read_sql_query('SELECT * FROM users WHERE age > 30', conn)
D. df = pd.read_sql_query('SELECT * FROM users WHERE age > "30"', conn)

Solution

  1. Step 1: Check SQL syntax for filtering

    The correct SQL syntax for greater than is age > 30. df = pd.read_sql_query('SELECT * FROM users WHERE age > 30', conn) uses this correctly.
  2. Step 2: Identify errors in other options

    df = pd.read_sql_query('SELECT * FROM users WHERE age => 30', conn) uses invalid operator =>. df = pd.read_sql_query('SELECT * FROM users WHERE age > "30"', conn) compares age to a string which may cause type issues. df = pd.read_sql_query('SELECT * FROM users WHERE age > 30', 'conn') passes connection as a string, which is incorrect.
  3. Final Answer:

    df = pd.read_sql_query('SELECT * FROM users WHERE age > 30', conn) -> Option C
  4. Quick Check:

    Correct SQL and connection object needed [OK]
Hint: Use > operator and pass connection object, not string [OK]
Common Mistakes:
  • Using => instead of >
  • Comparing numeric column to string
  • Passing connection as string instead of object
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard