Python SQL插入操作详解

2024年05月15日 Python SQL插入操作详解 极客笔记

Python SQL插入操作详解

在数据库操作中,插入数据是最常见的操作之一。Python也提供了许多库和模块来实现对SQL数据库的插入操作。本文将详细介绍如何使用Python进行SQL数据库的插入操作。

使用Python插入数据到SQL数据库

在Python中,我们可以使用多种库来实现对SQL数据库的插入操作,比如sqlite3MySQldbpsycopg2等。这里我们以sqlite3为例,来演示如何使用Python向SQL数据库插入数据。

使用sqlite3库插入数据

sqlite3是Python自带的一个轻量级的数据库,适用于小型的本地数据库操作。下面是一个简单的示例,演示如何使用sqlite3库插入数据:

import sqlite3

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

# 创建一个游标对象
cursor = conn.cursor()

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

# 插入一条数据
cursor.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")

# 提交更改
conn.commit()

# 关闭连接
conn.close()

在上面的代码中,我们首先连接到数据库,并创建一个游标对象。然后创建一个表stocks,并插入一条数据到表中。最后提交更改并关闭连接。

执行插入操作

为了验证上面的插入操作是否成功,我们可以使用select语句查看插入的数据。下面是一个简单的示例,演示如何查询插入的数据:

import sqlite3

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

# 创建一个游标对象
cursor = conn.cursor()

# 查询插入的数据
cursor.execute("SELECT * FROM stocks")
print(cursor.fetchall())

# 关闭连接
conn.close()

运行上面的代码,可以看到输出为插入的数据:

[('2006-01-05', 'BUY', 'RHAT', 100.0, 35.14)]

使用参数化插入数据

在实际应用中,我们经常需要插入多条数据到数据库,这时可以使用参数化的方式来插入数据,以提高效率和安全性。下面是一个示例,演示如何使用参数化的方式插入数据:

import sqlite3

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

# 创建一个游标对象
cursor = conn.cursor()

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

# 插入多条数据
data = [
    ('2006-01-05', 'BUY', 'RHAT', 100, 35.14),
    ('2006-01-06', 'SELL', 'AAPL', 50, 78.2),
    ('2006-01-07', 'BUY', 'GOOG', 200, 410.6)
]

cursor.executemany("INSERT INTO stocks VALUES (?, ?, ?, ?, ?)", data)

# 提交更改
conn.commit()

# 关闭连接
conn.close()

在上面的代码中,我们使用executemany方法一次性插入多条数据到数据库,通过?占位符来指代具体的数据。这样可以避免SQL注入攻击,并提高效率。

使用ORM插入数据

除了直接使用原生SQL语句来插入数据,我们也可以使用ORM(Object-Relational Mapping)工具来实现数据的插入操作。ORM工具可以将数据库表映射为Python对象,方便操作和管理数据。

使用SQLAlchemy插入数据

SQLAlchemy是一个强大的Python ORM工具,可以与多种数据库进行交互。下面是一个简单的示例,演示如何使用SQLAlchemy插入数据:

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='2006-01-05', trans='BUY', symbol='RHAT', qty=100, price=35.14)
session.add(stock)
session.commit()

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

在上面的代码中,我们首先创建了一个模型类Stock,定义了表的结构。然后创建了一个会话session,并插入一条数据到表中。最后查询数据并打印结果。

总结

通过以上的示例,我们详细介绍了使用Python进行SQL数据库的插入操作的各种方法。无论是使用原生SQL语句、参数化的方式还是ORM工具,都能够方便地实现数据的插入。在实际应用中,可以根据具体情况选择合适的插入方法,以提高效率和安全性。

本文链接:http://so.lmcjl.com/news/4606/

展开阅读全文