如何使用sqlalchemy 将数据库表定义自动转换成类
时间: 2024-05-13 18:19:02 浏览: 107
你可以使用sqlalchemy的declarative_base()函数来定义一个基类,然后通过继承这个基类来定义你的数据库表类。下面是一个简单的示例代码:
```python
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
age = Column(Integer)
engine = create_engine('sqlite:///example.db')
Base.metadata.create_all(engine)
```
在这个例子中,我们先定义了一个基类`Base`,然后通过定义一个继承自`Base`的`User`类来定义一个数据库表类。`User`类中的`__tablename__`属性指定了表名,`id`、`name`和`age`属性则对应了表中的三个列。
最后,我们通过`create_engine()`函数创建了一个数据库引擎,然后调用`Base.metadata.create_all()`方法自动创建了对应的数据库表。
这样,你就可以通过实例化`User`类来进行数据库操作了,例如:
```python
from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind=engine)
session = Session()
user = User(name='Alice', age=18)
session.add(user)
session.commit()
users = session.query(User).all()
for user in users:
print(user.id, user.name, user.age)
```
这个例子中,我们先通过`sessionmaker()`函数创建了一个数据库会话类`Session`,然后通过`Session()`方法创建了一个会话对象`session`。接着,我们实例化了一个`User`对象`user`并将其添加到会话中,并通过`commit()`方法提交了事务。最后,我们通过`query()`方法查询所有用户并打印了其信息。
阅读全文