Python中的数据库编程和ORM框架

在Python中,数据库编程通常涉及使用数据库适配器(如psycopg2、sqlite3、PyMySQL等)来连接和操作数据库。然而,许多开发者选择使用对象关系映射(ORM)框架,如SQLAlchemy或Django ORM,以更简洁、更面向对象的方式处理数据库交互。

下面,我将展示如何使用Python的SQLite3库进行数据库编程,以及如何使用SQLAlchemy ORM框架。

使用SQLite3库

SQLite是一个轻量级的数据库,经常被用在Python脚本和应用程序中。下面是一个简单的例子,展示了如何使用SQLite3库来创建一个数据库,创建一个表,并插入、查询数据。

markdown 复制代码
python复制代码
	import sqlite3  

	  

	# 连接到SQLite数据库(如果数据库不存在,它将被创建)  

	conn = sqlite3.connect('example.db')  

	  

	# 创建一个游标对象  

	c = conn.cursor()  

	  

	# 创建一个表  

	c.execute('''  

	    CREATE TABLE stocks  

	    (date text, trans text, symbol text, qty real, price real)  

	''')  

	  

	# 插入数据  

	c.execute("INSERT INTO stocks VALUES ('2023-10-23','BUY','RHAT',100,35.14)")  

	  

	# 提交事务  

	conn.commit()  

	  

	# 查询数据  

	for row in c.execute('SELECT * FROM stocks'):  

	    print(row)  

	  

	# 关闭连接  

	conn.close()

使用SQLAlchemy ORM框架

SQLAlchemy是一个强大的Python ORM框架,它提供了全面的企业级持久性模型。下面是一个使用SQLAlchemy的例子,演示了如何定义模型、创建表、插入和查询数据。

首先,你需要安装SQLAlchemy:

markdown 复制代码
bash复制代码
	pip install sqlalchemy

然后,你可以使用以下代码:

markdown 复制代码
python复制代码
	from sqlalchemy import create_engine, Column, Integer, String, Float, ForeignKey  

	from sqlalchemy.ext.declarative import declarative_base  

	from sqlalchemy.orm import sessionmaker, relationship  

	  

	# 定义模型基类  

	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(Float)  

	  

	    def __repr__(self):  

	        return f"<Stock(symbol='{self.symbol}', qty={self.qty}, price={self.price})>"  

	  

	# 创建数据库引擎  

	engine = create_engine('sqlite:///example.db', echo=True)  

	  

	# 创建表  

	Base.metadata.create_all(engine)  

	  

	# 创建会话类  

	Session = sessionmaker(bind=engine)  

	session = Session()  

	  

	# 插入数据  

	new_stock = Stock(date='2023-10-23', trans='BUY', symbol='RHAT', qty=100, price=35.14)  

	session.add(new_stock)  

	session.commit()  

	  

	# 查询数据  

	stocks = session.query(Stock).all()  

	for stock in stocks:  

	    print(stock)  

	  

	# 关闭会话  

	session.close()

在这个例子中,我们定义了一个Stock类来表示股票数据,并使用SQLAlchemy的ORM功能来创建表、插入和查询数据。这比直接使用SQL语句更加简洁和面向对象。

相关推荐
小二·32 分钟前
Python Web 开发进阶实战 :AI 原生数字孪生 —— 在 Flask + Three.js 中构建物理世界实时仿真与优化平台
前端·人工智能·python
Bony-1 小时前
Go语言垃圾回收机制详解与图解
开发语言·后端·golang
Amumu121382 小时前
Vue组件化编程
前端·javascript·vue.js
We་ct2 小时前
LeetCode 6. Z 字形变换:两种解法深度解析与优化
前端·算法·leetcode·typescript
小二·2 小时前
Python Web 开发进阶实战(终章):从单体应用到 AI 原生生态 —— 45 篇技术演进全景与未来开发者生存指南
前端·人工智能·python
m0_637256583 小时前
vue-baidu-map添加了类型组件导致非常卡顿的问题
前端·javascript·vue.js
挂机且五杀3 小时前
为什么在React地图组件里,memo 不是优化,而是生存?
前端·react.js·前端框架
RFCEO3 小时前
HTML编程 课程七、:HTML5 新增表单标签与属性
前端·html·html5·搜索框·手机号·邮箱验证·日期选择
刘一说3 小时前
Vue开发中的“v-model陷阱”:为什么它不能用于非表单元素?
前端·javascript·vue.js
利刃大大4 小时前
【Vue】组件生命周期 && 组件生命周期钩子
前端·javascript·vue.js·前端框架