sqlalchemy代码详解
时间: 2023-07-03 20:23:07 浏览: 53
以下为一个简单的SQLAlchemy代码示例,以MySQL为例:
```python
from sqlalchemy import create_engine, Column, Integer, String, ForeignKey
from sqlalchemy.orm import sessionmaker, relationship
from sqlalchemy.ext.declarative import declarative_base
# 创建连接
engine = create_engine('mysql+pymysql://username:password@host:port/database')
# 创建Session
Session = sessionmaker(bind=engine)
session = Session()
# 创建基类
Base = declarative_base()
# 定义表结构
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(32), nullable=False)
age = Column(Integer)
class Book(Base):
__tablename__ = 'book'
id = Column(Integer, primary_key=True, autoincrement=True)
name = Column(String(32), nullable=False)
author_id = Column(Integer, ForeignKey('user.id'))
author = relationship('User', backref='books')
# 创建表
Base.metadata.create_all(engine)
# 插入数据
user = User(name='Tom', age=18)
book = Book(name='Python学习指南', author=user)
session.add(user)
session.add(book)
session.commit()
# 查询数据
users = session.query(User).filter(User.age > 20).all()
for user in users:
print(user.name)
# 更新数据
user = session.query(User).filter_by(name='Tom').first()
user.age = 20
session.commit()
# 删除数据
book = session.query(Book).filter_by(name='Python学习指南').first()
session.delete(book)
session.commit()
# 关闭连接
session.close()
```
代码解释:
1. 创建连接:使用`create_engine()`函数创建一个数据库连接,需要指定数据库类型、用户名、密码、主机名、端口号和数据库名。
2. 创建Session:使用`sessionmaker()`函数创建一个Session类,通过`bind`参数指定数据库连接。
3. 创建基类:使用`declarative_base()`函数创建一个基类,用于定义数据表的结构。
4. 定义表结构:使用`Column()`函数定义表中的列,使用`relationship()`函数定义表之间的关系。
5. 创建表:使用`metadata.create_all()`方法创建表。
6. 插入数据:使用`session.add()`方法插入数据,使用`commit()`方法提交事务。
7. 查询数据:使用`query()`函数查询数据,可以通过链式调用`filter()`方法实现条件过滤,使用`all()`方法获取所有结果,使用`first()`方法获取第一个结果。
8. 更新数据:使用`query()`函数查询数据,并使用`filter_by()`方法指定查询条件,然后修改数据并提交事务。
9. 删除数据:使用`query()`函数查询数据,并使用`filter_by()`方法指定查询条件,然后使用`delete()`方法删除数据并提交事务。
10. 关闭连接:使用`close()`方法关闭连接。
总之,SQLAlchemy提供了一种灵活的数据库操作方式,可以大大简化数据库操作,提高数据库操作的效率和可靠性。