示例代码

from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Integer, Column, String, DATE, Table, BigInteger #生成引擎
engine = create_engine("mysql+pymysql://root:123456@localhost/mytest?charset=utf8")
#常见ORM基类
Base = declarative_base() #创建学生表
class Student(Base):
__tablename__ = 'student'
id = Column(Integer, primary_key=True)
name = Column(String(32))
password = Column(String(64))
mobile = Column(BigInteger)
gradesclasses = Column(String(64)) #创建老师表
class Teacher(Base):
__tablename__ = 'teacher'
id = Column(Integer, primary_key=True)
name = Column(String(32))
password = Column(String(64))
mobile = Column(BigInteger) if __name__ == "__main__":
Base.metadata.create_all(engine)

ORM多外键关联

#ORM多外键关联

from sqlalchemy import create_engine
from sqlalchemy import Integer, ForeignKey, String, Column
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship engine = create_engine("mysql+pymysql://skymyyang:666666@mfgskymyyang.chinacloudapp.cn/myyang",
encoding='utf-8')
Base = declarative_base() class Customer(Base):
__tablename__ = 'customer'
id = Column(Integer, primary_key=True)
name = Column(String(32)) billing_address_id = Column(Integer, ForeignKey("address.id")) #账单地址
shipping_address_id = Column(Integer, ForeignKey("address.id")) #邮寄地址 这两个地址同时关联了 同一个地址表 billing_address = relationship("Address", foreign_keys = [billing_address_id])
shipping_address = relationship("Address", foreign_keys = [shipping_address_id]) #通过关联差address表 class Address(Base):
__tablename__ = 'address'
id = Column(Integer, primary_key=True)
street = Column(String(64))
city = Column(String(64))
state = Column(String(64))
def __repr__(self):
return self.street Base.metadata.create_all(engine) #创建表结构

然后进行查询以及数据插入

from daynine import orm_mang_fk

from sqlalchemy.orm import session,sessionmaker

Session_class = sessionmaker(bind=orm_mang_fk.engine)
session = Session_class()#生成session实例 相当于cursor # addr1 = orm_mang_fk.Address(street="Tiantongyuan", city="Changping", state="BJ")
# addr2 = orm_mang_fk.Address(street="Wudaokou", city="Haidian", state="BJ")
# addr3 = orm_mang_fk.Address(street="Yanjiao", city="LangFang", state="HB")
# session.add_all([addr1, addr2, addr3])
# c1 = orm_mang_fk.Customer(name = "skymyyang", billing_address_id = 4, shipping_address_id = 5)
# c2 = orm_mang_fk.Customer(name = "mayun", billing_address_id = 6, shipping_address_id = 6)
# session.add_all([c1, c2])
# session.commit()
obj = session.query(orm_mang_fk.Customer).filter(orm_mang_fk.Customer.name =="skymyyang").first()
print(obj.name, obj.billing_address, obj.shipping_address)

ORM多对多

#ORM多对多

from sqlalchemy import create_engine
from sqlalchemy import Integer, ForeignKey, String, Column, DATE, Table
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
#创建引擎
engine = create_engine("mysql+pymysql://skymyyang:666666@mfgskymyyang.chinacloudapp.cn/myyang?charset=utf8",encoding='utf-8')
#生成ORM基类
Base = declarative_base()
book_m2m_author = Table('book_m2m_author', Base.metadata,
Column('book_id', Integer, ForeignKey('books.id')),
Column('author_id', Integer, ForeignKey('authors.id')),
) class Book(Base):
__tablename__ = 'books'
id = Column(Integer, primary_key=True)
name = Column(String(64))
pub_date = Column(DATE)
authors = relationship('Author', secondary=book_m2m_author, backref = 'books') def __repr__(self):
return self.name class Author(Base):
__tablename__ = 'authors'
id = Column(Integer, primary_key=True)
name = Column(String(32))
email = Column(String(64)) def __repr__(self):
return self.name if __name__ == '__main__':
Base.metadata.create_all(engine)

Python sqlalchemy的基本使用的更多相关文章

  1. python SQLAlchemy

    这里我们记录几个python SQLAlchemy的使用例子: 如何对一个字段进行自增操作 user = session.query(User).with_lockmode('update').get ...

  2. Python SQLAlchemy --3

    本文為 Python SQLAlchemy ORM 一系列教學文: 刪除 學會如何查詢之後,就能夠進行後續的刪除.更新等操作. 同樣地,以幾個範例做為學習的捷徑. 123456789 user_1 = ...

  3. Python SQLAlchemy --2

    本文為 Python SQLAlchemy ORM 一系列教學文: 接下來會更深入地探討查詢的使用. 查詢的基本使用法為 session.query(Mapped Class),其後可加 .group ...

  4. Python SQLAlchemy --1

    本文為 Python SQLAlchemy ORM 一系列教學文: SQLAlchemy 大概是目前 Python 最完整的資料庫操作的套件了,不過最令人垢病的是它的文件真的很難閱讀,如果不搭配個實例 ...

  5. Python SqlAlchemy使用方法

    1.初始化连接 from sqlalchemy import create_engine from sqlalchemy.orm import sessionmaker engine = create ...

  6. python+SQLAlchemy+爬虫

    python+SQLAlchemy+爬虫 前面分享了SQLAlchemy的知识,这次我共享一下学习用python开发爬虫再把爬出来的数据放到用SQLAlchemy的数据库上面的知识,当然我这个是带测试 ...

  7. Python.SQLAlchemy.0

    1. SQLAlchemy and You http://lucumr.pocoo.org/2011/7/19/sqlachemy-and-you/ 2. Overview http://docs.s ...

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

    http://www.makaidong.com/%E8%84%9A%E6%9C%AC%E4%B9%8B%E5%AE%B6/28053.shtml "Python SQLAlchemy基本操 ...

  9. Python SQLAlchemy入门教程

    本文将以Mysql举例,介绍sqlalchemy的基本用法.其中,Python版本为2.7,sqlalchemy版本为1.1.6. 一. 介绍 SQLAlchemy是Python中最有名的ORM工具. ...

  10. Python—sqlalchemy

    SQLAlchemy SQLAlchemy是Python编程语言下的一款ORM框架,该框架建立在数据库API之上,使用关系对象映射进行数据库操作. #Dialect用于和数据API进行交流,根据配置文 ...

随机推荐

  1. iis 发布mvc

    转载地址:https://www.cnblogs.com/Leo_wl/p/3866625.html

  2. mybatis 插入数据 在没有commit时 获取主键id

      <insert id="insert" parameterType="Mail" useGeneratedKeys="true" ...

  3. Linux 第七天

    软件包管理 1.软件包分类 1)源码包(脚本安装包) 优点: l  开源,如果有足够的能力,可以修改源代码 l  可以自由选择所需的功能 l  软件是编译安装,所以更加适合自己的系统,更加稳定也效率更 ...

  4. js计算器---转

    至今见过的一个还没问题的计算器,收藏在此. 转自javascript写的简单的计算器原文链接,谢分享! js部分 ar num=0,result=0,numshow="0"; va ...

  5. python_day1_常量

    常量 定义: 不变的量为常量,或在程序中不可改变的量 用法: AGE_OF_BOY  =56 注:在Python中没有一个专门的语法代表常量,程序员约定俗成用变量名全部大写代表常量

  6. 1131 Subway Map DFS解法 BFS回溯!

    In the big cities, the subway systems always look so complex to the visitors. To give you some sense ...

  7. 过滤器和拦截器filter和Interceptor的区别

    1.创建一个Filter过滤器只需两个步骤 创建Filter处理类 web.xml文件中配置Filter 2.Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的 ...

  8. 在Azure DevOps Server的代理服务器安装Python环境

    Python和Azure DevOps Server Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初主要为系统运维人员编写自动化脚本,在实际应用中,Python已经在前端 ...

  9. Jmeter 结构、原理介绍 Jmeter结构、原理介绍(1)

    一.Jmeter 简介 1.是基于java语言的开源的应用软件. 2.可以进行接口测试.性能测试.接口及性能的自动化测试. 二.Jmeter体系结构 元件:可以理解为每一个菜单.如THHP请求.响应断 ...

  10. Linux pwn入门教程(3)——ROP技术

    作者:Tangerine@SAINTSEC 原文来自:https://bbs.ichunqiu.com/thread-42530-1-1.html 0×00 背景 在上一篇教程的<shellco ...