当前位置:Gxlcms > 数据库问题 > sqlalchemy.orm

sqlalchemy.orm

时间:2021-07-01 10:21:17 帮助过:3人阅读

#!/usr/bin/env python# -*- coding: UTF-8 -*-from sqlalchemy.orm import mapper, sessionmaker

__author__ = ‘tan9le‘
 from sqlalchemy import create_engine, Table, Column, Integer, String, MetaDatafrom sqlalchemy.sql.expression import Castfrom sqlalchemy.ext.compiler import compilesfrom sqlalchemy.dialects.mysql import         BIGINT, BINARY, BIT, BLOB, BOOLEAN, CHAR, DATE,         DATETIME, DECIMAL, DECIMAL, DOUBLE, ENUM, FLOAT, INTEGER,         LONGBLOB, LONGTEXT, MEDIUMBLOB, MEDIUMINT, MEDIUMTEXT, NCHAR,         NUMERIC, NVARCHAR, REAL, SET, SMALLINT, TEXT, TIME, TIMESTAMP,         TINYBLOB, TINYINT, TINYTEXT, VARBINARY, VARCHAR, YEAR#表的属性描述对象metadata = MetaData()
userTable = Table(    "wzp_user",metadata,
    Column(‘user_id‘, Integer, primary_key=True),
    Column(‘user_name‘, VARCHAR(50), unique=True, nullable=False),
    Column(‘password‘, VARCHAR(40), nullable=True)
)#创建数据库连接,MySQLdb连接方式mysql_db = create_engine(‘mysql://用户名:密码@ip:port/dbname‘)#创建数据库连接,使用 mysql-connector-python连接方式#mysql_db = create_engine("mysql+mysqlconnector://用户名:密码@ip:port/dbname")#生成表metadata.create_all(mysql_db)#创建一个映射类class User(object):
    pass#把表映射到类mapper(User, userTable)#创建了一个自定义了的 Session类Session = sessionmaker()#将创建的数据库连接关联到这个sessionSession.configure(bind=mysql_db)
session = Session()def main():
    u = User()    #给映射类添加以下必要的属性,因为上面创建表指定这个字段不能为空,且唯一
    u.user_name=‘tan9le测试‘
    #按照上面创建表的相关代码,这个字段允许为空
    u.password=‘123456‘
    #在session中添加内容
    session.add(u)    #保存数据
    session.flush()    #数据库事务的提交,sisson自动过期而不需要关闭
    session.commit()    #query() 简单的理解就是select() 的支持 ORM 的替代方法,可以接受任意组合的 class/column 表达式
    query = session.query(User)    #列出所有user
    print list(query)    #根据主键显示
    print query.get(1)    #类似于SQL的where,打印其中的第一个
    print query.filter_by(user_name=‘tan9le测试‘).first()
    u = query.filter_by(user_name=‘tan9le测试‘).first()    #修改其密码字段
    u.password = ‘654321‘
    #提交事务
    session.commit()    #打印会出现新密码
    print query.get(1).password    #根据id字段排序,打印其中的用户名和密码
    for instance in session.query(User).order_by(User.user_id):        print instance.user_name, instance.password    #释放资源
    session.close()if __name__ == ‘__main__‘:
    main()


sqlalchemy.orm

标签:

人气教程排行