Python SQLAlchemy 程序实例
来源:互联网 发布:淘宝网渔具大全价格 编辑:程序博客网 时间:2024/06/05 12:41
Sample1
# coding=gbkfrom sqlalchemy import *from sqlalchemy.orm import *engine = create_engine('sqlite:///./sqlalchemy.db', echo=True)metadata = MetaData(engine)'''create table'''users_table = Table('users', metadata, Column('id', Integer, primary_key=True), Column('name', String(40)), Column('email', String(120)))if not users_table.exists(): users_table.create()'''load table'''users_table = Table('users', metadata, autoload=True) '''insert'''users_table.insert().execute(name="sss", email="eee@eee.com")users_table.insert().execute(name="ttt", email="tt@eee.com")'''update'''users_table.update(users_table.c.name=="ttt").execute(name="ddd")'''select'''result=users_table.select(and_(users_table.c.name == "ddd", users_table.c.email == "tt@eee.com")).execute()for item in result.fetchall(): print item'''delete'''users_table.delete(users_table.c.name=="ddd").execute()'''ORM -- bind'''class User(object): pass mapper(User, users_table) Session = sessionmaker() #创建了一个自定义了的 Session类Session.configure(bind=engine) #将创建的数据库连接关联到这个sessionsession = Session()u = User()u.name='asdf'u.email='asdf@asdf.com'session.add(u) #在session中添加内容session.flush() #保存数据session.commit() #数据库事务的提交,sisson自动过期而不需要关闭
Sample2
# coding=gbkfrom sqlalchemy.orm import mapper, sessionmaker #sessionmaker() 函数是最常使用的创建最顶层可用于整个应用 Session 的方法,Session 管理着所有与数据库之间的会话from datetime import datetimefrom sqlalchemy import Table, MetaData, Column, ForeignKey, Integer, String, Unicode, DateTime #会SQL的人能理解这些函数吧?from sqlalchemy import *from sqlalchemy.orm import *engine = create_engine("sqlite:///tutorial.db", echo=True) #创建到数据库的连接,echo=True 表示用logging输出调试结果metadata = MetaData() #跟踪表属性user_table = Table( #创建一个表所需的信息:字段,表名等 'tf_user', metadata, Column('id', Integer, primary_key=True), Column('user_name', Unicode(16), unique=True, nullable=False), Column('email_address', Unicode(255), unique=True, nullable=False), Column('password', Unicode(40), nullable=False), Column('first_name', Unicode(255), default=''), Column('last_name', Unicode(255), default=''), Column('created', DateTime, default=datetime.now))metadata.create_all(engine) #在数据库中生成表class User(object): pass #创建一个映射类mapper(User, user_table) #把表映射到类Session = sessionmaker() #创建了一个自定义了的 Session类Session.configure(bind=engine) #将创建的数据库连接关联到这个sessionsession = Session()u = User()u.user_name='dongwm'u.email_address='dongwm@dongwm.com'u.password='testpass' #给映射类添加以下必要的属性,因为上面创建表指定这几个字段不能为空session.add(u) #在session中添加内容session.flush() #保存数据session.commit() #数据库事务的提交,sisson自动过期而不需要关闭query = session.query(User) #query() 简单的理解就是select() 的支持 ORM 的替代方法,可以接受任意组合的 class/column 表达式print list(query) #列出所有userprint query.get(1) #根据主键显示print query.filter_by(user_name='dongwm').first() #类似于SQL的where,打印其中的第一个u = query.filter_by(user_name='dongwm').first()u.password = 'newpass' #修改其密码字段session.commit() #提交事务print query.get(1).password #打印会出现新密码for instance in session.query(User).order_by(User.id): #根据id字段排序,打印其中的用户名和邮箱地址 print instance.user_name, instance.email_address
Sample3:
# coding=gbkfrom sqlalchemy import *from sqlalchemy.orm import *from datetime import datetimefrom sqlalchemy import Table, MetaData, Column, ForeignKey, Integer, String, Unicode, DateTimeengine = create_engine("sqlite:///tutorial2.db", echo=True) #创建到数据库的连接,echo=True 表示用logging输出调试结果metadata = MetaData() #跟踪表属性class User(object): passclass Group(object): passclass Permission(object): passuser_table = Table('tf_user', metadata, Column('id', Integer, primary_key=True), Column('user_name', Unicode(16), unique=True, nullable = False), Column('password', Unicode(16), nullable = False))group_table = Table("tf_group", metadata, Column('id', Integer, primary_key=True), Column('group_name', Unicode(16), unique=True, nullable = False))permission_table = Table("tf_permission", metadata, Column('id', Integer, primary_key=True), Column('permission_name', Unicode(16), unique=True, nullable = False))user_group = Table("user_group", metadata, Column('user_id', None, ForeignKey('tf_user.id'), primary_key=True), Column('group_id', None, ForeignKey('tf_group.id'), primary_key=True))group_permission = Table("group_permission", metadata, Column('permission_id', None, ForeignKey('tf_permission.id'), primary_key=True), Column('group_id', None, ForeignKey('tf_group.id'), primary_key=True))mapper(User, user_table, properties=dict(_groups=relation(Group, secondary=user_group, backref='_users')))mapper(Group, group_table, properties=dict(_permissions=relation(Permission, secondary=group_permission, backref='_groups')))mapper(Permission, permission_table)metadata.create_all(engine)
0 0
- Python SQLAlchemy 程序实例
- Python SQLAlchemy
- python sqlalchemy
- Python SQLAlchemy
- Python程序和Flask框架中使用SQLAlchemy的教程
- sqlalchemy 简单实例
- sqlalchemy 简单实例
- SQLAlchemy---操作数据库实例
- flask-sqlalchemy实例
- flask-sqlalchemy 实例代码
- DataTables Python SQLAlchemy
- 【Python】SQLALchemy-查询篇
- python 的 SQLAlchemy操作
- 十七、Python SQLAlchemy
- python sqlalchemy中文
- Python - sqlalchemy Orm
- SQLAlchemy:python数据库连接 神器
- python sqlalchemy操作
- MySQL写法集锦
- C# WMI使用的WIN32_类库名
- 通过反射机制,对将要入库的实体对象的各个属性进行判断,得到最终要更新的实体对象
- imageview适配问题
- weblogic修改密码
- Python SQLAlchemy 程序实例
- 民族布鞋连锁将不断迈向国家市场
- Neutron LBaaS Service基本知识
- 一生定要美丽一次
- double类型数据范围
- Android Building System 分析
- linux下安装iasp以及apache多站点虚拟主机配置
- 为什么NSView只能在主线程刷新
- 云计算设计模式(十四)——实体化视图模式