python--orm示例

建表插入数据:

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer,String,Date
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+pymysql://tim:[email protected]/test",
                       encoding = "utf-8",echo=True)

Base = declarative_base()

class User(Base):
    __tablename__= "user"
    id = Column(Integer,primary_key=True)
    name = Column(String(32))
    password = Column(String(64))
Base.metadata.create_all(engine)  #创建表结构

Session_class = sessionmaker(bind=engine) #创建与数据库的会话session class,注意这里返回给session的是个类,不是实例
Session = Session_class() #生成session实例

user_obj = User(name=‘tim‘,password=‘sina4433‘) #生成你要创建的数据对象
user_obj2 = User(name = ‘jack‘,password=‘abc‘)
print(user_obj.name,user_obj.id) #此时还没创建对象,不信打印一下id,还是None

Session.add(user_obj) # 把要创建的数据对象添加到这个session里,一会儿统一创建
Session.add(user_obj2)
print(user_obj,user_obj.id) #此时也依然还没创建
Session.commit()

查询:

import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer,String,Date
from sqlalchemy.orm import sessionmaker

engine = create_engine("mysql+pymysql://tim:[email protected]/test",
                       encoding = "utf-8")

Base = declarative_base()

class User(Base):
    __tablename__= "user"
    id = Column(Integer,primary_key=True)
    name = Column(String(32))
    password = Column(String(64))

    def __repr__(self):
        return "<%s name:%s>" % (self.id,self.name)

Base.metadata.create_all(engine)  #创建表结构

Session_class = sessionmaker(bind=engine) #创建与数据库的会话session class,注意这里返回给session的是个类,不是实例
Session = Session_class() #生成session实例

# user_obj = User(name=‘tim‘,password=‘sina4433‘) #生成你要创建的数据对象
# user_obj2 = User(name = ‘jack‘,password=‘abc‘)
# print(user_obj.name,user_obj.id) #此时还没创建对象,不信打印一下id,还是None
#
# Session.add(user_obj) # 把要创建的数据对象添加到这个session里,一会儿统一创建
# Session.add(user_obj2)
# print(user_obj,user_obj.id) #此时也依然还没创建
# Session.commit()

# data = Session.query(User).filter_by().all()  #结果是一个列表
# print(data)

# data = Session.query(User).filter_by(name=‘tim‘).all()  #结果是一个列表
# print(data[0].id)

# data = Session.query(User).filter_by(id=1).all()
# print(data)

# data = Session.query(User).filter(User.id>1).all()
# print(data)

# data = Session.query(User).filter(User.id>1).filter(User.id<4).all()
# print(data)

data = Session.query(User).filter(User.id>1).filter(User.id<4).first()
print(data)
# #更改数据
# data.name = "zhang"
# data.password = "Shit"
# Session.commit()

# my_user = Session.query(User).filter_by(id=1).first()
# my_user.name = ‘Jack‘
#
# fake_user = User(name=‘Rain‘,password=‘123456‘)
#
# Session.add(fake_user)
#
# print(Session.query(User).filter(User.name.in_([‘Jack‘,‘rain‘])).all())
#
# Session.rollback()
#
# print(Session.query(User).filter(User.name.in_([‘Jack‘,‘rain‘])).all())

多表连接:

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

engine = create_engine("mysql+pymysql://tim:[email protected]/test",
                       encoding = "utf-8")
Base = declarative_base()

class Student(Base):
    __tablename__= "student"
    id = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(32),nullable=True)
    register_date = Column(DATE,nullable=True)
    #加个关联关系

    def __repr__(self):
        return "<%s name:%s>"%(self.id,self.name)

class StudyRecord(Base):
    __tablename__ = "StudyRecord"
    id = Column(Integer,primary_key=True,autoincrement=True)
    day = Column(Integer)
    status = Column(String(32))
    stu_id = Column(Integer,ForeignKey(Student.id))
    #加个关联关系
    student = relationship("Student",backref="my_study_record")

    def __repr__(self):
        return "<%s day:%s status:%s>"%(self.student.name,self.day,self.status)

Base.metadata.create_all(engine)  #创建表结构
Session_class = sessionmaker(bind=engine) #创建与数据库的会话session class,注意这里返回给session的是个类,不是实例
session = Session_class() #生成session实例

# ret = Session.query(Student).join(Study_record).all()  #这种方式需要主外键关联
# print(ret)

# ret = session.query(Student,StudyRecord).filter(Student.id==StudyRecord.stu_id).all()
# print(ret)

# s1 = Student(name="Alex",register_date=‘2013-02-01‘)
# s2 = Student(name="Jack",register_date=‘2014-04-01‘)
# s3 = Student(name="gao",register_date=‘2013-10-01‘)
# s4 = Student(name="wang",register_date=‘2011-11-01‘)
#
# study_obj1 = StudyRecord(day=1,status="YES",stu_id=1)
# study_obj2 = StudyRecord(day=2,status="NO",stu_id=1)
# study_obj3 = StudyRecord(day=3,status="YES",stu_id=1)
# study_obj4 = StudyRecord(day=1,status="YES",stu_id=2)
#
# session.add_all([s1,s2,s3,s4,study_obj1,study_obj2,study_obj3,study_obj4])
# session.commit()

#查出Alex上了几节课
stu_obj = session.query(Student).filter(Student.name==‘Alex‘).first()
print(stu_obj.my_study_record)
时间: 2024-10-10 01:44:00

python--orm示例的相关文章

Django和SQLAlchemy,哪个Python ORM更好?

ORM是什么? 在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的用途. ORM代表对象关系映射.ORM中的每个单词解释了他们在实际项目中的用途: 对象(Object):这部分表示哪个对象或者在哪种编程语言下使用这个框架,例如Python. 关系(Relational):这部分表示你正在使用的RDBMS数据库(关系数据库管理器系统).有许多流行的关系数据库,你可能使用以下这些:MSSQL.MySQL.Oracle.PostgreS

Python爬虫示例

1 #!/usr/bin/python 2 #coding:utf8 3 import re 4 import urllib 5 6 def gethtml(url): 7 page=urllib.urlopen(url) 8 html=page.read() 9 return html 10 11 def getimg(html): 12 reg=r'<img src="(http.*?\.gif)" alt' 13 imgre=re.compile(reg) 14 imgli

python入门示例程序

该实例是raspi和dsp电机运动控制板的串口uart通信: import serial class SerialHandler(): ''' raspi serial for communication ''' def __init__(self)://初始化一些默认参数,其它非初始化参数在方法中作为参数传入 self.serialdev = None//给参数赋初始值 def serial_open(self,serialdev,timeout)://用户可传入的参数,其它参数(如baudr

Python ORM 实现及python在linux下连接oracle

ORM “Object Relational Mapping”,即对象-关系映射,就是把关系数据库的一行映射为一个对象,也就是一个类对应一个表,这样,写代码更简单,不用直接操作SQL语句. orm模块:orm.py #!/usr/bin/env python # -*- coding: utf-8 -*- ' Simple ORM using metaclass ' __author__ = 'Michael Liao' class Field(object): def __init__(sel

[Python] SQLBuilder 示例代码

用Python写一个SQLBuilder,Java版可以从 http://www.java2s.com/Code/Java/Database-SQL-JDBC/SQLBuilder.htm 看到. 附上代码: 示例代码(一): class SQLDirector: @classmethod def buildSQL(cls, builder): sql = "" sql += builder.getCommand() sql += builder.getTable() sql += b

python ORM框架:SqlAlchemy

ORM,对象关系映射,即Object Relational Mapping的简称,通过ORM框架将编程语言中的对象模型与数据库的关系模型建立映射关系,这样做的目的:简化sql语言操作数据库的繁琐过程(原生sql的编写及拼接等),转而直接使用对象模型来操作数据库做替代 第一部分 SqlAlchemy本身无法直接操作数据库,它是建立在第三方数据库API(如python 中的pymysql库)之上,应用程序调用对象模型进行增删改查等操作时,将对象转化成sql语句,然后再通过API调用执行已经转换好的s

python orm框架SQLAlchemy简单应用(数据库操作)

#_*_coding:utf-8_*_ ''' 创建SQLAlchemy应用基本过程 1.创建连接(和关系数据库创建连接) 2.声明映射文件(python中到类和数据库中的表做一对一的映射,这样就可以通过python中的类对数据库中到表进行操作) 3.创建模式(可以创建表) 4.初始化映射实例 5.创建会话 6.持久化实例对象 ''' from sqlalchemy import create_engine #创建连接 engine = create_engine('mysql://root:1

python selenium2示例 - 日志管理

前言 在自动化测试实践过程中,必不可少的就是进行日志管理,方便调试和生产问题追踪,python提供了logging模块来进行日志的管理.下面我们就logging模块的学习和使用进行一个层层推进演示学习. Python的logging模块提供了通用的日志系统,可以方便第三方模块或应用使用.这个模块提供了不同的日志级别,并可以采用不同的方式进行日志记录,比如文件,HTTP GET/POST, SMTP, socket等等,甚至可以自定实现具体的日志记录方式. logging模块与java的log4j

python发送邮件 示例

示例1 1 import smtplib 2 from email.mime.text import MIMEText 3 from email.header import Header 4 def sedmail(): 5 sender = '[email protected]' 6 receivers = ['[email protected]'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 7 8 # 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设

Python ORM框架之 Peewee入门

之前在学Django时,发现它的模型层非常好用,把对数据库的操作映射成对类.对象的操作,避免了我们直接写在Web项目中SQL语句,当时想,如果这个模型层可以独立出来使用就好了,那我们平台操作数据库也可以这么玩了,我不喜欢写SQL语句. 后来才知道,原来这个叫ORM(Object Relational Mapping,对象关系映射),在Python下面有很多这样的类库,如SQLObject.Storm.peewee和SQLAlchemy. 这里就给你们介绍一下Peewee的基本使用,因为它非常的轻