# -*- coding: utf-8 -*- # @Time : 2017/4/10 10:08 # @Author : xiaojingjing # @File : sqlalchemy_tutorial.py # @Software: PyCharm import sqlalchemy #引入此包,方便告诉程序使用什么数据库引擎 from sqlalchemy import create_engine #根据不同数据库引擎创建一个基类,然后通过集成创建这个表对应的类 from sqlalchemy.ext.declarative import declarative_base #导入创建类时对应类型的定义 from sqlalchemy import Column,Integer,String #导入事务处理函数 from sqlalchemy.orm import sessionmaker #关系操作查询模块 from sqlalchemy import and_,or_ #查看SQLAlchemy当前版本 print(sqlalchemy.__version__) #创建数据库引擎,这里拿的小型数据库sqlite"'sqlite:///foo.db'"sqlite数据库引擎在create_engine中的参数配置 ; "echo=True"表示数据库操作的原始语句将会被显示出来 engine=create_engine('sqlite:///foo.db',echo=True) Base=declarative_base() class User(Base): __tablename__='user_login' id=Column(Integer,primary_key=True) username=Column(String(30)) password=Column(String(30)) def __repr__(self): return "<User(name='%s',password='%s')>"%(self.username,self.password) #创建表 # Base.metadata.create_all(engine) # #插入数据 # ad_user=User(username='one',password='onlyone') # print(ad_user) #创建事务,并实例化 Session=sessionmaker(bind=engine) session=Session() # session.add(ad_user) #添加一条查询语句 our_users=session.query(User).filter_by(username='one').first() #批量添加 # session.add_all( # [ # User(username='two',password='onlytwo'), # User(username='three',password='onlythree'), # User(username='four',password='onlyfour'), # User(username='five',password='onlyfive') # # ]) # # #提交事务 # session.commit() #查询一条数据,指定username=two,查询第一条,first()默认为第一条,first(10)为前10条 # print(session.query(User).filter_by(username='two').first()) #查询所有,User为对象,对象里面指定了表名"user_login" # print(session.query(User).all()) #根据id查询循环打印 # for row in session.query(User).order_by(User.id): # print(row) #查找username为('one','two','three')的数据~in # for row in session.query(User).filter(User.username.in_(['one','two','three'])): # print(row) #查找username不为('one','two','three')的数据~not in # for row in session.query(User).filter(~User.username.in_(['one','two','three'])): # print(row) #统计数量,username为“one”的数量 # count=session.query(User).filter(User.username=='one').count() # print(count) #And条件判断 # for row in session.query(User).filter(and_(User.username=='one',User.password=='onlyone')): # print(row) #Or条件判断 # for row in session.query(User).filter(or_(User.username=='one',User.username=='two')): # print(row) #创建带有外键的表 from sqlalchemy import ForeignKey from sqlalchemy.orm import relationship,backref class Address(Base): __tablename__='addresses' id=Column(Integer,primary_key=True) email_address=Column(String,nullable=False) user_id=Column(Integer,ForeignKey('user_login.id')) user=relationship("User",backref=backref('addresses',order_by=id)) def __repr__(self): return "<Address(email_address='%s')>"%self.email_address #执行创建操作 # Base.metadata.create_all(engine) #对两张表添加数据,并根据外键查询结果 jack=User(username='jack',password='admin') jack.addresses=[ Address(email_address='jack@yeah.net'), Address(email_address='towjd@sina.com')] session.add(jack) session.commit() for u,a in session.query(User,Address).\ filter(User.id==Address.user_id).\ filter(Address.email_address=='jack@yeah.net').\ all(): print(u,a)
相关推荐
为了更好地提升自己的sql以及使用sqlachemy水平,可以使用MySQL自带的示范数据库员工进行练习。 课程目录 未完待续... ,敬请期待后续的复杂的联合查询语句。 欢迎大家提供需要转变为sqlalchemy语法的sql语句。 如有...
这个“sqlalchemy-challenge”似乎是一个练习项目,旨在帮助用户深入理解并熟练掌握SQLAlchemy的用法。下面我们将详细探讨SQLAlchemy的核心概念、功能以及如何通过它来完成挑战作业。 1. **对象关系映射(ORM)**:...
在Python的Web开发中,SQLAlchemy是一个非常重要的库,它为开发者提供了强大的对象关系映射(ORM)功能,使得操作数据库变得如同操作Python对象一样简单。...不断练习和实践,你将成为SQLAlchemy的熟练使用者。
"SQLAlchemy挑战"可能是一个旨在提升开发者在使用SQLAlchemy进行数据库操作技能的练习或项目。在这个挑战中,你可能会遇到以下一些关键知识点: 1. **对象关系映射(ORM)**:SQLAlchemy的核心就是ORM,它将数据库表...
【标题】:“这是一个关于网页设计开发的基础练习” 在这个基础练习中,我们将主要关注网页设计与开发的基本概念,尤其是与Python编程相关的部分。Python虽然不是传统的Web前端开发语言,但它在后端开发、自动化...
在这个挑战中,Alec Miller可能是指导者或者参与者,他设计了一个练习来提升对SQLAlchemy的掌握。 首先,我们需要了解SQLAlchemy的基本概念。ORM是Object-Relational Mapping的缩写,它是将传统的关系型数据库模型...
通过wk7SqlAlchemy-master这个压缩包,我们可以预期里面可能包含了示例代码、教程或者练习,帮助初学者理解和使用SQLAlchemy。学习和实践这些内容,将有助于提升Python开发中与数据库交互的能力。
在“HW5”这样的练习或项目中,你可能需要结合使用WTForms和SQLAlchemy来实现一个带有用户注册和登录功能的Web应用。WTForms可以用来创建注册和登录表单,包括验证用户输入的有效性,如检查邮箱格式和密码强度。而...
"Sqlalchemy-Challenge"显然是一个围绕这个主题的项目或学习挑战,可能包含了通过Jupyter Notebook进行的实践练习。 SQLAlchemy是Python SQL工具包和ORM框架,它不仅提供了全面的SQL构造和表达式语言,还支持直接...
在`sqlalchemy-challenge-main`这个目录下,你可能会找到包含示例代码、练习问题和解决方案的文件。仔细研究这些文件,动手实践,将是你提高SQLAlchemy技能的关键。记住,实践是检验真理的唯一标准,不断尝试和学习...
《深入理解Python ORM框架:SqlAlchemy实战》 SqlAlchemy,作为Python中最强大的对象关系映射(ORM)框架之一,为开发者提供了...通过实战练习,不断加深对SqlAlchemy的理解,你会发现它在数据库操作中的无穷魅力。
SQLAlchemy,作为Python中的一个强大的ORM(对象关系映射)工具,使得与数据库的交互变得简单而高效。本挑战主要关注于通过Jupyter Notebook环境使用SQLAlchemy进行数据库操作的学习和实践。 SQLAlchemy挑战的核心...