SQLAlchemy入门
什么是SQLAlchemy?
是Python连接SQL数据库的一种方式,需要通过驱动来连接。
是Python中使用最广泛的ORM(对象关系映射)工具之一,即把数据库中的二维表结构映射成一个list对象,list对象的每一个元素是一个tuple,例如:
id | name |
1 | 'Michael' |
2 | 'Bob' |
3 | 'Adam' |
[
==> ('1', 'Michael'),
('2', 'Bob'),
('3', 'Adam')
]
为什么要使用SQLAlchemy?
可以通过对象来操作数据库,避免了麻烦的sql语句
如何使用SQLAlchemy连接MySQL数据库?
1 定义映射关系
2 连接到数据库
3 通过对象操作数据库
# 导入: from sqlalchemy import Column, Integer, String, create_engine from sqlalchemy.orm import sessionmaker from sqlalchemy.ext.declarative import declarative_base # 创建对象的基类: Base = declarative_base() # 定义User对象: 可以定义多个类 class User(Base): # 表的名字: __tablename__ = 'user' # 表的结构: id = Column(Integer, primary_key=True) name = Column(String(20))
# 初始化数据库连接: engine = create_engine('mysql+mysqlconnector://root:yourpassword@localhost:3306/test')
# 连接信息: '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名' # 这里是用 mysql.connector驱动(pip install mysql), # Python3可以使用pymysql驱动 'mysql+pymysql://......' # 只能连接到已经存在的数据库,不能新建
# 自动创建表
Base.metadata.create_all(engine)
# 创建DBSession类型: DBSession = sessionmaker(bind=engine)
# 操作数据库(增删改查) session = DBSession()
session对象可以通过三种方式操作数据库:
A 通过实例对象 session.add(User(id=3, name='zoro')) 、 delete、 ...
B 原生SQL语句 session.execute('select * from user where id=%d' % 3)
C 通过SQL表达式
session.execute('SELECT * FROM user WHERE id=?', {'param': 5})
new_user = User(id='5', name='Bob') session.add(new_user)
session.commit() session.close()
KEEP LEARNING!