SQLAlchemy - ORM

使用SQLAlchemy:

要使用ORM来操作数据库,首先需要创建一个类来与对应的表进行映射。现在以User表来做例子,它有自增长的id、name、fullname、password这些字段,那么对应的类为:

from sqlalchemy import Column,Integer,String
from constants import DB_URI
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base

engine = create_engine(Db_URI, echo=True)

# 所有的类都要继承自`declarative_base`这个函数生成的基类
Base = declarative_base(engine)
class User(Base):
    # 定义表名为users
    __tablename__ = 'users'
     
    # 将id设置为主键,并且默认是自增长
    id = Column(Integer, primary_key=True)
    # name字段,字符类型,最大的长度是50个字符
    name = Column(String(50))
    fullname = Column(String(50))
    password = Column(String(100))
    
    # 让打印出来的数据更好看,可选
    def __repr__(self):
        return "<User(id='%s', name='%s',fullname='%s',password='%s')>" % (self.id, self.name, self.fullname, self.password)

SQLAlchemy会自动的设置第一个Integer的主键并且没有标记为外键的字段添加自增长的属性。因此以上例子中id自动的变成自增长的。以上创建完和表映射的类后,还没有真正映射到数据库中,执行以下代码将类映射到数据库中:

Base.metadata.create_all()

在创建完数据表,并且做完数据库的映射后,接下来让我们买添加数据进去:

en_user = User(name='ed', fullname='Ed Jones', password='edspassword')
# 打印名字
print ed_user.name
>>>ed
# 打印密码
print ed_user.name
>>>edspassword
# 打印id
print ed_user.id
>>>None

可以看到,name和password都能正常打印,唯独id为None,这是因为id是一个自增长的主键,还未插入到数据库中,id是不存在的。接下来让我们把创建的数据插入到数据库中。和数据库打交道,是一个叫做Session对象。

猜你喜欢

转载自www.cnblogs.com/xushuhai/p/9098638.html