网站首页 > 技术文章 正文
在Python中,操作SQL数据库的常用库包括sqlite3和SQLAlchemy。以下是这两个库的基本用法和示例。
1. 使用 sqlite3
导入和创建数据库
import sqlite3
# 连接到数据库(如果不存在则创建)
conn = sqlite3.connect('example.db')
cursor = conn.cursor()
创建表
# 创建表
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''')
conn.commit()
插入数据
# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Alice', 25))
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('Bob', 30))
conn.commit()
查询数据
# 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
print(row)
更新和删除数据
# 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()
# 删除数据
cursor.execute("DELETE FROM users WHERE name = ?", ('Bob',))
conn.commit()
关闭连接
# 关闭连接
conn.close()
2. 使用 SQLAlchemy
安装 SQLAlchemy
确保已安装SQLAlchemy库:
pip install 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_sqlalchemy.db')
Base = declarative_base()
定义模型
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String)
age = Column(Integer)
# 创建表
Base.metadata.create_all(engine)
插入数据
Session = sessionmaker(bind=engine)
session = Session()
# 添加用户
new_user = User(name='Alice', age=25)
session.add(new_user)
session.commit()
查询数据
# 查询所有用户
users = session.query(User).all()
for user in users:
print(user.name, user.age)
更新和删除数据
# 更新用户
user = session.query(User).filter_by(name='Alice').first()
user.age = 26
session.commit()
# 删除用户
session.delete(user)
session.commit()
关闭会话
# 关闭会话
session.close()
总结
- sqlite3:适用于简单的数据库操作,直接操作SQL。
- SQLAlchemy:提供ORM(对象关系映射)功能,适合复杂应用,支持多种数据库。
猜你喜欢
- 2024-12-13 Flask-PyMongo 小试牛刀
- 2024-12-13 盘点2024年最有“钱途”的8个节点及布局指南
- 2024-12-13 Python+Socket实现多人聊天室:聊天、群聊、图片、表情、文件等
- 2024-12-13 AI Agent 和 LangGraph 给项目管理方式带来新的变革
- 2024-12-13 信息安全聚合 Sec-News 的重构之路
- 2024-12-13 (进阶篇)简析一个比Flask和Tornado更高性能的API 框架FastAPI
- 2024-12-13 Flask_admin—快速搭建访客登记系统Web管理后台
- 2024-12-13 Flask开发RESTful API
- 2024-12-13 mysql 数据库使用分享(多图解析)
- 2024-12-13 ubuntu 安装 apache-airflow 教程
- 最近发表
- 标签列表
-
- cmd/c (90)
- c++中::是什么意思 (84)
- 标签用于 (71)
- 主键只能有一个吗 (77)
- c#console.writeline不显示 (95)
- pythoncase语句 (88)
- es6includes (74)
- sqlset (76)
- apt-getinstall-y (100)
- node_modules怎么生成 (87)
- chromepost (71)
- flexdirection (73)
- c++int转char (80)
- mysqlany_value (79)
- static函数和普通函数 (84)
- el-date-picker开始日期早于结束日期 (76)
- js判断是否是json字符串 (75)
- c语言min函数头文件 (77)
- asynccallback (87)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- java (73)
- js数组插入 (83)
- mac安装java (72)
- 无效的列索引 (74)