automap

body,table { font-family: 微软雅黑; font-size: 10pt }
table { border-collapse: collapse; border: solid gray; border-width: 2px 0 2px 0 }
th { border: 1px solid gray; padding: 4px; background-color: #DDD }
td { border: 1px solid gray; padding: 4px }
tr:nth-child(2n) { background-color: #f8f8f8 }

一、事先定义的表结构

  • db_init.py
#!/usr/bin/env python
# -*- coding:utf-8 -*-

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String, Boolean
from sqlalchemy import ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+pymysql://root:[email protected]/db01?charset=utf8")
Base = declarative_base()

class Student(Base):
    __tablename__ = ‘student‘
    id = Column(Integer, primary_key=True)
    name = Column(String(32), nullable=False)
    address = relationship(‘Address‘, backref=‘student‘)

class Address(Base):
    __tablename__ = ‘address‘
    id = Column(Integer, primary_key=True)
    u_id = Column(Integer, ForeignKey(‘student.id‘))
    name = Column(String(32), nullable=False)

# Base.metadata.drop_all(bind=engine)
Base.metadata.create_all(bind=engine)

session_cls = sessionmaker(bind=engine)
session = session_cls()

session.add_all([
    Student(name=‘user1‘),
    Student(name=‘user2‘),
    Student(name=‘user3‘),
    Address(u_id=1, name=‘add-1‘),
    Address(u_id=2, name=‘add-2‘),
    Address(u_id=3, name=‘add-3‘),
    Address(u_id=3, name=‘add-4‘),
])
# session.commit()
# 利用 backref查找,成功
ret = session.query(Address).filter(Address.u_id == 1).first().student.name
print(ret)

二、不知道表结构

  • automap.py   # 注意,此处只是一对多,反射到了releastionsip,多对多没有测试成功,但是官网说可以
#!/usr/bin/env python
# -*- coding:utf-8 -*-

import random
from sqlalchemy.ext.automap import automap_base
from sqlalchemy.orm import Session
from sqlalchemy.orm import relationship
from sqlalchemy import create_engine

# 初始化一个automap类
Base = automap_base()
engine = create_engine("mysql+pymysql://root:[email protected]/db01?charset=utf8")
Base.prepare(engine, reflect=True)  # 反射所有的表

session = Session(engine)
Student = Base.classes.student  # 获取所需要的表
Address = Base.classes.address
# 利用表的backref 成功获取结果
ret = session.query(Address).filter(Address.u_id == 1).first().student.name
print(ret)

时间: 2024-10-08 11:13:04

automap的相关文章

asp.netMVC中配置automap

第一.新建类库,以解决方案名XXX为例,建立子类库名为  XXX.AutoMapper. 第二. XXX.AutoMapper类库中,添加对automap的引用. 第三.创建映射文件类 ModelProfile,继承Profile codes: --------------------------------------------- namespace BCMS.AutoMapper.Profiles{ public class ModelProfile : Profile { public

对mybastis 的理解4--dao层辅助类AutoMap

package org.xnat.dao.util;  import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List;  import javax.persistence.Column;  /**  *   * @author xnat  *  */ public class AutoMap {     //键     private String key;     //符号     priva

[Pythod][Sqlalchemy]Automap 实践

from sqlalchemy.orm import Session从 sqlalchemy.orm 包中引入 Session 这个工具类 必须指定表名,不然报错NullType 不知道为什么 C:\Users\williamc>sqlacodegen --noviews --noconstraints --noindexes --outfile E:\\code\\Python\\qmzhijia\\modal\\modal.py sqlite:///E:\\code\\Python\\qmz

ABP的第一个程序和遇到的一些问题

ABP在这里就不多介绍了.在这篇文章中主要介绍使用模板生成的ABP项目使用遇到的一些问题. 1.首先在http://www.aspnetboilerplate.com/ 官方网站上创建一个模板项目, 下面输入项目的项目名称,点击create my project创建,创建的项目可以直接运行. 这是打开项目显示出来的代码结构,然后安装数据库,我使用的是sql server2008,修改Web项目下的Web.config文件的数据库连接字符串 <connectionStrings> <add

使用Topshelf快速搭建Windows服务

创建一个windows服务用于同步SqlServer数据到Elasticsearch 新建elasticsearch索引 PUT:http://localhost:9200/index_singer/ { "settings": { "number_of_shards": 5, "number_of_replicas": 1 }, "mappings": { "singer_index": { "

mybaits入门demo映射文件详解(三)

第二篇文章:  mybaits入门demo配置文件详解(二) Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码.MyBatis 就是针对 SQL 构建的,并且比普通的方法做的更好. SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): cache – 给定命名空间的缓存配置. cache-ref –

劳动节配置F5负载均衡配置小结

2014年5月1日是劳动节,是劳动人民应该休息的节日,呵呵结果这几天却是作死的节奏,天天加班到2点半,真实很辛苦呀,整个过程很艰辛但是结果是好的. 1.配置LC1600链路负载均衡,首先要激活license的.在system-license-Re activacte 2.要创建VLAN,由于是联通线路.电信线路和下行线路,就创建vlan_cnc vlan_ctc vlan1,每个vlan要设置对应的端口,比如vlan_cnc对应光纤口2.1 3.创建完vlan 要写selfip即每个vlan的地

F5负载均衡虚拟服务器配置FTP端口访问不了

F5配置ip映射到地址池ftp服务,访问报错:FTP出现"数据 Socket 错误: 连接被拒""ftp 列表错误"解决办法 1条回答 FTP的vs类型需要选择standard模式,并开启FTP的profile,在你这种访问模式下还需要开启snat automap才可以.

[转]FluentData

本文来自:http://fluentdata.codeplex.com/wikipage?title=Fluency&referringTitle=Home Documentation  Fluency This contribution is an attempt to speedup the development of domain layer in bottom to top model with FluentData. This means you already have the D