python orm sqlite_Python数据库ORM工具sqlalchemy的学习笔记

本文详细介绍了如何使用Python的ORM工具SQLAlchemy操作SQLite数据库,包括连接、事务、Session及ORM模型的创建、增删改查操作。同时,文章还涉及了数据库的迁移和版本管理,帮助读者深入理解SQLAlchemy的使用。
摘要由CSDN通过智能技术生成

SQLAlchemy是python的一个数据库ORM工具,提供了强大的对象模型间的转换,可以满足绝大多数数据库操作的需求,并且支持多种数据库引擎(sqlite,mysql,postgres, mongodb等),在这里记录基本用法和学习笔记。

一、安装

通过pip安装

$ pip install SQLAlchemy

二、使用

首先是连接到数据库,SQLALchemy支持多个数据库引擎,不同的数据库引擎连接字符串不一样,常用的有

mysql://username:password@hostname/database

postgresql://username:password@hostname/database

sqlite:absolute/path/to/database

sqlite:///c:/absolute/path/to/database

更多连接字符串的介绍参见这里

下面是连接和使用sqlite数据库的例子

1. connection

使用传统的connection的方式连接和操作数据库

from sqlalchemy import create_engine

# 数据库连接字符串

DB_CONNECT_STRING = 'sqlite:///:memory:'

# 创建数据库引擎,echo为True,会打印所有的sql语句

engine = create_engine(DB_CONNECT_STRING, echo=True)

# 创建一个connection,这里的使用方式与python自带的sqlite的使用方式类似

with engine.connect() as con:

# 执行sql语句,如果是增删改,则直接生效,不需要commit

rs = con.execute('SELECT 5')

data = rs.fetchone()[0]

print "Data: %s" % data

与python自带的sqlite不同,这里不需要Cursor光标,执行sql语句不需要commit

2. connection事务

使用事务可以进行批量提交和回滚

from sqlalchemy import create_engine

# 数据库连接字符串

DB_CONNECT_STRING = 'sqlite:Users/zhengxiankai/Desktop/Document/db.sqlite'

engine = create_engine(DB_CONNECT_STRING, echo=True)

with engine.connect() as connection:

trans = connection.begin()

try:

r1 = connection.execute("select * from User")

r2 = connection.execute("insert into User(name, age) values(?, ?)", 'bomo', 24)

trans.commit()

except:

trans.rollback()

raise

3. session

connection是一般使用数据库的方式,sqlalchemy还提供了另一种操作数据库的方式,通过session对象,session可以记录和跟踪数据的改变,在适当的时候提交,并且支持强大的ORM的功能,下面是基本使用

from sqlalchemy import create_engine

from sqlalchemy.orm import sessionmaker

# 数据库连接字符串

DB_CONNECT_STRING = 'sqlite:Users/zhengxiankai/Desktop/Document/db.sqlite'

# 创建数据库引擎,echo为True,会打印所有的sql语句

engine = create_engine(DB_CONNECT_STRING, echo=True)

# 创建会话类

DB_Session = sessionmaker(bind=engine)

# 创建会话对象

session = DB_Session()

# dosomething with session

# 用完记得关闭,也可以用with

session.close()

上面创建了一个session对象,接下来可以操作数据库了,session也支持通过sql语句操作数据库

session.execute('select * from User')

session.execute("insert into User(name, age) values('bomo', 13)")

session.execute("insert into User(name, age) values(:name, :age)", {'name': 'bomo', 'age':12})

# 如果是增删改,需要commit

session.commit()

注意参数使用dict,并在sql语句中使用:key占位

4. ORM

上面简单介绍了sql的简单用法,既然是ORM框架,我们先定义两个模型类User和Role,sqlalchemy的模型类继承自一个由declarative_base()方法生成的类,我们先定义一个模块Models.py生成Base类

from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

User.py

from sqlalchemy import Column, Integer, String

from Models import Base

class User(Base):

__tablename__ = 'User'

id = Column('id', Integer, primary_key=True, autoincrement=True)

name &

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值