1, 基本流程代码
# 创建session对象
session = DBSession() # 生成链接数据库的实例
# 创建新User对象
new_user = User(id='1', name='Bob')
# 添加到session
session.add(new_user)
# 提交即保存到数据库
session.commit()
# 关闭session
session.close()
2, 案例1, 插入一行数据
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import sessionmaker
# 链接是需要指定要用到的MySQL数据库
engine = create_engine('mysql+pymysql://root:python@localhost:3306/py3_sqlalchemy_2019?charset=utf8', echo=True)
Base = declarative_base() # 生成SQLORM基类
class User(Base):
# 对应MySQL中数据表的名字
__tablename__ = 'users'
# 创建字段
id = Column(Integer, primary_key=True) # users表中的id字段(主键)
username = Column(String(64), nullable=False, index=True) # users表中的username字段
password = Column(String(64), nullable=False) # users表中的password字段
email = Column(String(64), nullable=False, index=True) # users表中的email字段(有索引)
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__, self.username)
# 创建userinfo表(所有表结构)
# Base.metadata.create_all(engine)
DBSession = sessionmaker(bind=engine) # 创建与数据库的会话,返回的是一个类
# 创建session对象
session = DBSession() # 生成链接数据库的实例
# 创建新User对象
new_user = User(id='1', username='python-teacher', password="123456", email="dong4716138@163.com")
# new_user = User(username='python-teacher', password="123456", email="dong4716138@163.com")
# 添加到session
session.add(new_user)
session.commit()
session.close()
3, 案例2, 插入多行数据
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import sessionmaker
# 链接是需要指定要用到的MySQL数据库
engine = create_engine('mysql+pymysql://root:python@localhost:3306/py3_sqlalchemy_2019?charset=utf8', echo=True)
Base = declarative_base() # 生成SQLORM基类
class User(Base):
# 对应MySQL中数据表的名字
__tablename__ = 'users'
# 创建字段
id = Column(Integer, primary_key=True) # users表中的id字段(主键)
username = Column(String(64), nullable=False, index=True) # uers表中的username字段
password = Column(String(64), nullable=False) # users表中的password字段
email = Column(String(64), nullable=False, index=True) # users表中的email字段(有索引)
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__, self.username)
# 创建userinfo表(所有表结构)
# Base.metadata.create_all(engine)
DBSession = sessionmaker(bind=engine) # 创建与数据库的会话,返回的是一个类
# 创建session对象
session = DBSession() # 生成链接数据库的实例
new_user1 = User(username='python-teacher2', password="112233", email="laoyan@163.com")
new_user2 = User(username='python-teacher3', password="654321", email="laoma@163.com")
new_user3 = User(username='python-teacher4', password="789012", email="laoye@163.com")
session.add_all([new_user1, new_user2, new_user3])
session.commit()
session.close()
4,SQLAlchemy查询数据
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import sessionmaker
# 链接是需要指定要用到的MySQL数据库
engine = create_engine('mysql+pymysql://root:python@localhost:3306/py3_sqlalchemy_2019?charset=utf8')
Base = declarative_base() # 生成SQLORM基类
class User(Base):
# 对应MySQL中数据表的名字
__tablename__ = 'users'
# 创建字段
id = Column(Integer, primary_key=True) # users表中的id字段(主键)
username = Column(String(64), nullable=False, index=True) # users表中的username字段
password = Column(String(64), nullable=False) # users表中的password字段
email = Column(String(64), nullable=False, index=True) # users表中的email字段(有索引)
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__, self.username)
# 创建userinfo表(所有表结构)
# Base.metadata.create_all(engine)
DBSession = sessionmaker(bind=engine) # 创建与数据库的会话,返回的是一个类
# 创建session对象
session = DBSession() # 生成链接数据库的实例
# 获取所有数据
obj = session.query(User).all()
# print(type(obj)) # 查询出来的类型是 <class 'list'>
# 说明:
# obj查询出来的是一个列表,其中数据为 User类的实例对象
for temp in obj:
print("-" * 20)
# print(temp) # 此时temp为User类的实例对象
# print(type(temp)) # 类型是 <class '__main__.User'>
print(temp.id)
print(temp.username)
print(temp.password)
print(temp.email)
session.close()
按条件查询
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, String, Integer
from sqlalchemy.orm import sessionmaker
# 链接是需要指定要用到的MySQL数据库
engine = create_engine('mysql+pymysql://root:python@localhost:3306/py3_sqlalchemy_2019?charset=utf8')
Base = declarative_base() # 生成SQLORM基类
class User(Base):
# 对应MySQL中数据表的名字
__tablename__ = 'users'
# 创建字段
id = Column(Integer, primary_key=True) # users表中的id字段(主键)
username = Column(String(64), nullable=False, index=True) # users表中的username字段
password = Column(String(64), nullable=False) # users表中的password字段
email = Column(String(64), nullable=False, index=True) # users表中的email字段(有索引)
def __repr__(self):
return '%s(%r)' % (self.__class__.__name__, self.username)
# 创建userinfo表(所有表结构)
# Base.metadata.create_all(engine)
DBSession = sessionmaker(bind=engine) # 创建与数据库的会话,返回的是一个类
# 创建session对象
session = DBSession() # 生成链接数据库的实例
# 获取指定数据
obj = session.query(User).filter(User.id == 1).one()
print(obj.id)
print(obj.username)
print(obj.password)
print(obj.email)
print("-" * 20)
obj = session.query(User).filter(User.id == 4).one()
print(obj.id)
print(obj.username)
print(obj.password)
print(obj.email)
session.close()