Python SQLAlchemy 程序实例

Sample1

# coding=gbk

from 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="[email protected]")
users_table.insert().execute(name="ttt", email="[email protected]")
'''
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 == "[email protected]")).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)  #将创建的数据库连接关联到这个session
session = Session()
u = User()
u.name='asdf'
u.email='[email protected]'
session.add(u)  #在session中添加内容

session.flush() #保存数据
session.commit() #数据库事务的提交,sisson自动过期而不需要关闭

Sample2

# coding=gbk

from sqlalchemy.orm import mapper, sessionmaker #sessionmaker() 函数是最常使用的创建最顶层可用于整个应用 Session 的方法,Session 管理着所有与数据库之间的会话
from datetime import datetime
from 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)  #将创建的数据库连接关联到这个session
session = Session()
u = User()
u.user_name='dongwm'
u.email_address='[email protected]'
u.password='testpass'  #给映射类添加以下必要的属性,因为上面创建表指定这几个字段不能为空
session.add(u)  #在session中添加内容

session.flush() #保存数据
session.commit() #数据库事务的提交,sisson自动过期而不需要关闭

query = session.query(User) #query() 简单的理解就是select() 的支持 ORM 的替代方法,可以接受任意组合的 class/column 表达式
print list(query) #列出所有user
print 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=gbk

from sqlalchemy import *
from sqlalchemy.orm import *
from datetime import datetime
from sqlalchemy import Table, MetaData, Column, ForeignKey, Integer, String, Unicode, DateTime

engine = create_engine("sqlite:///tutorial2.db", echo=True) #创建到数据库的连接,echo=True 表示用logging输出调试结果
metadata = MetaData() #跟踪表属性

class User(object):
    pass

class Group(object):
    pass

class Permission(object):
    pass

user_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)
时间: 2024-10-09 10:20:37

Python SQLAlchemy 程序实例的相关文章

Appium + python -小程序实例

from appium import webdriverfrom appium.webdriver.common.touch_action import TouchActionfrom time import sleep desired_caps = { 'platformName': 'Android', 'platformVersion': '9', 'deviceName': '4871660c', 'appPackage': 'com.tencent.mm', 'appActivity'

Python编程学习,高效求解素数程序实例

素数是编程中经常需要用到的. 作为学习Python的示例,下面是一个高效求解一个范围内的素数的程序,不需要使用除法或者求模运算. 1 #coding:utf-8 #设置python文件的编码为utf-8,这样就可以写入中文注释 2 def primeRange(n): 3 myArray=[1 for x in range(n+1)] ##列表解析,生成长度为(n+1)的列表,每个数值都为1 4 myArray[0]=0 5 myArray[1]=0 6 startPos=2 7 while s

Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python

http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操作和常用技巧包含大量实例,非常好python":关键词:python sqlalchemy 基本 操 作和 常用 技巧 包含 大量 实例 非常好 python 首先说下,由于最新的 0.8 版还是开发版本,因此我使用的是 0.79 版,api 也许会有些不同.因为我是搭配 mysql innodb

Python学习笔记四:列表,购物车程序实例

列表 切片 中括号,逗号分隔,可以一次取出多个元素,起始位置包括,结束位置不包括(顾头不顾尾) 如果取最后一个,而且不知道列表长度,可以使用负数(-1是最后一个,以此类推) 如果取最后几个,记住从左往右数着取值,顾头不顾尾,所以如果取最后两个应该是[-2:] 从前取,如果是从0 开始,也可以省略 追加元素 a_list.append(value) 插入元素到任意位置 a_list.insert(index,value) 修改元素 a_list[index]=value 删除元素 a_list.r

Python操作Mysql实例代码教程在线版(查询手册)_python

实例1.取得MYSQL的版本 在windows环境下安装mysql模块用于python开发 MySQL-python Windows下EXE安装文件下载 复制代码 代码如下: # -*- coding: UTF-8 -*- #安装MYSQL DB for pythonimport MySQLdb as mdb con = None try:    #连接mysql的方法:connect('ip','user','password','dbname')    con = mdb.connect('

Python并发编程实例教程

有关Python中的并发编程实例,主要是对Threading模块的应用,文中自定义了一个Threading类库. 一.简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执行,这个控制流被称为该进程的主线程.在任何给定的时刻,一个程序只做一件事情. 一个程序可以通过Python库函数中的os或subprocess模块创建新进程(例如os.fork()或

Python SqlAlchemy使用方法

Python SqlAlchemy使用方法 1.初始化连接 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create_engine('mysql://[email protected]/test'echo=True) DBSession = sessionmaker(bind=engine) session = DBSession() ret=session.execu

十七、Python SQLAlchemy

SQLAlchemy tutorial 关于这个教程 This tutorial is for SQLAlchemy version 0.2. You may notice that some sections are marked "New in 0.2". If this is the first time you're reading this tutorial, you can safely skip those sections. On the other hand, if

Python类变量和实例变量区别

深入理解python类的实例变量和类变量 Python变量的本质:被赋值1 普通python变量(非类相关变量)很容易理解,在被赋值后即变量存在,可读可写2 Python类的变量(类变量和实例对象变量)以某种方式在某地方被赋值,即存在,可被读写2.1 Python类变量被赋值     (1)类的设计里,             class里def外,通过变量名能被赋值             def里通过类对象即类名字的点运算变量名可被赋值      (2)程序里             通过类