Python的ORM框架SQLAlchemy使用入门(一)

不要放弃你的幻想。当幻想没有的时候,你还可以生存,但是你虽生犹死。

创建实体类,生成数据库架构

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'
    #在这里我们定义person表的列
    #请注意,每个字段也是一个普通的Python实例属性。
    id = Column(Integer, primary_key=True)
    name = Column(String(250), nullable=False)

class Address(Base):
    __tablename__ = 'address'
    #在这里我们定义address表的列。
    # 请注意,每个字段也是一个普通的Python实例属性
    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类的元数据,使得声明可通过DBSession实例来访问
Base.metadata.bind = engine
DBSession = sessionmaker(bind=engine)
'''一个DBSession()实例建立与数据库中的所有对话, 并展现一个“临时区域”,加载所有对象到数据库会话对象
直到调用session.commit(),否则对会话对象所做的任何更改将不会持久化到数据库中。如果你对变化不满意,
你可以恢复所有到上次操作,通过调用session.rollback()
'''
session = DBSession()

# 在Person表中插入一个Person
new_person = Person(name='new person')
session.add(new_person)
session.commit()

# 在address表中插入一个Address
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()暂停并进入pdb调试环境,可以用命令p查看变量,或者用命令c继续运行:
pdb.set_trace()

结果如图:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值