不要放弃你的幻想。当幻想没有的时候,你还可以生存,但是你虽生犹死。
创建实体类,生成数据库架构
import os
import sys
from sqlalchemy import Column, ForeignKey, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine
Base = declarative_base()
class Person(Base):
__tablename__ = 'person'
id = Column(Integer, primary_key=True)
name = Column(String(250), nullable=False)
class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
street_name = Column(String(250))
street_number = Column(String(250))
post_code = Column(String(250), nullable=False)
person_id = Column(Integer, ForeignKey('person.id'))
person = relationship(Person)
"""创建引擎 存储数据到本地目录中SQLAlchemy的example.db文件。"""
engine = create_engine('sqlite:///sqlalchemy_example.db')
"""创建引擎中的所有表。这相当于“CREATE TABLE”原始的SQL语句。"""
Base.metadata.create_all(engine)
录入表数据
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy_declarative import Address, Base, Person
engine = create_engine('sqlite:///sqlalchemy_example.db')
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
'''一个DBSession()实例建立与数据库中的所有对话, 并展现一个“临时区域”,加载所有对象到数据库会话对象
直到调用session.commit(),否则对会话对象所做的任何更改将不会持久化到数据库中。如果你对变化不满意,
你可以恢复所有到上次操作,通过调用session.rollback()
'''
session = DBSession()
new_person = Person(name='new person')
session.add(new_person)
session.commit()
new_address = Address(post_code='00000', person=new_person)
session.add(new_address)
session.commit()
增,查数据
from sqlalchemy_declarative import Person, Base, Address
from sqlalchemy import create_engine
import pdb;
from sqlalchemy.orm import sessionmaker
engine = create_engine('sqlite:///sqlalchemy_example.db')
Base.metadata.bind = engine
DBSession = sessionmaker()
DBSession.bind = engine
session = DBSession()
print ("""===============================================""")
print(session.query(Person).all())
person = session.query(Person).first()
address = session.query(Address).filter(Address.person == person).one()
print(person.name)
print(address.post_code)
print("""==============================================""")
new_person = Person(name='john brown')
session.add(new_person)
session.commit()
pdb.set_trace()
结果如图: