2024年05月15日 Python SQL插入操作详解 极客笔记
在数据库操作中,插入数据是最常见的操作之一。Python也提供了许多库和模块来实现对SQL数据库的插入操作。本文将详细介绍如何使用Python进行SQL数据库的插入操作。
在Python中,我们可以使用多种库来实现对SQL数据库的插入操作,比如sqlite3
、MySQldb
、psycopg2
等。这里我们以sqlite3
为例,来演示如何使用Python向SQL数据库插入数据。
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注入攻击,并提高效率。
除了直接使用原生SQL语句来插入数据,我们也可以使用ORM(Object-Relational Mapping)工具来实现数据的插入操作。ORM工具可以将数据库表映射为Python对象,方便操作和管理数据。
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/