使用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对象。