在Python中运行SQL查询可以通过多种方式实现,其中比较常用的有使用第三方库,如SQLite3和Pandas,以及使用ORM(对象关系映射)框架如SQLAlchemy。

使用SQLite3库

SQLite3是Python内置的一个轻量级的数据库,可以用于执行SQL查询。下面是一个示例代码:

import sqlite3

# 连接到数据库
conn = sqlite3.connect('example.db')
cur = conn.cursor()

# 创建一个表
cur.execute('''CREATE TABLE IF NOT EXISTS stocks
               (date text, trans text, symbol text, qty real, price real)''')

# 插入数据
cur.execute("INSERT INTO stocks VALUES ('2021-01-05', 'BUY', 'AAPL', 100, 345.67)")

# 查询数据
cur.execute("SELECT * FROM stocks")
rows = cur.fetchall()
for row in rows:
    print(row)

# 提交更改并关闭连接
conn.commit()
conn.close()

上面的代码演示了如何使用SQLite3库连接到数据库、创建表、插入数据以及执行查询。

使用Pandas库

Pandas是一个用于数据处理和分析的强大库,也可以用来执行SQL查询。下面是一个示例代码:

import pandas as pd

# 创建一个DataFrame
data = {'date': ['2021-01-05'],
        'trans': ['BUY'],
        'symbol': ['AAPL'],
        'qty': [100],
        'price': [345.67]}
df = pd.DataFrame(data)

# 将DataFrame写入数据库
conn = sqlite3.connect('example.db')
df.to_sql('stocks', conn, if_exists='replace', index=False)

# 从数据库中读取数据
query = "SELECT * FROM stocks"
df = pd.read_sql_query(query, conn)
print(df)

conn.close()

这段代码展示了如何使用Pandas库将DataFrame写入数据库并执行SQL查询。

使用SQLAlchemy

SQLAlchemy是一个Python的ORM(对象关系映射)框架,可以将Python对象映射到数据库表,并通过Python代码操作数据库。下面是一个示例代码:

from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

# 创建引擎
engine = create_engine('sqlite:///example.db', echo=True)

# 创建基类
Base = declarative_base()

# 创建模型类
class Stock(Base):
    __tablename__ = 'stocks'

    id = Column(Integer, primary_key=True)
    date = Column(String)
    trans = Column(String)
    symbol = Column(String)
    qty = Column(Integer)
    price = Column(Integer)

# 创建表
Base.metadata.create_all(engine)

# 创建会话
Session = sessionmaker(bind=engine)
session = Session()

# 插入数据
stock = Stock(date='2021-01-05', trans='BUY', symbol='AAPL', qty=100, price=345.67)
session.add(stock)
session.commit()

# 查询数据
stocks = session.query(Stock).all()
for s in stocks:
    print(s.id, s.date, s.trans, s.symbol, s.qty, s.price)

session.close()

这段代码展示了如何使用SQLAlchemy创建模型类、插入数据、执行查询以及关闭会话。

旅行图

journey
    title How to Run SQL in Python
    section Using SQLite3
        Connect to Database --> Create Table --> Insert Data --> Execute Query --> Commit Changes --> Close Connection
    section Using Pandas
        Create DataFrame --> Write to Database --> Read from Database
    section Using SQLAlchemy
        Create Engine --> Create Base --> Create Model --> Create Session --> Insert Data --> Execute Query --> Close Session

类图

classDiagram
    class SQLite3 {
        - connect()
        - cursor()
        - execute()
        - fetchall()
        - commit()
        - close()
    }
    class Pandas {
        - DataFrame()
        - to_sql()
        - read_sql_query()
    }
    class SQLAlchemy {
        - create_engine()
        - declarative_base()
        - sessionmaker()
        - add()
        - commit()
        - query()
    }

综上所述,我们可以通过SQLite3库、Pandas库或SQLAlchemy框架在Python中运行SQL查询。每种方法都有其特点和适用场景,开发者可以根据实际需求选择合适的方式来操作数据库。