什么是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='', name='Bob')
session.add(new_user)
session.commit()
session.close()