# -*- coding: utf-8 -*-
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 engine = create_engine('mysql+mysqlconnector://plan:plan@mysql/plan') Base = declarative_base() # 生成orm基类 class User(Base): #进行映射,创建表结构,models ,三项,id name password
__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的是个class,不是实例
Session = Session_class() # 生成session实例
# Session.close()#关闭连接 这个放最后 # 插入开始
print('插入开始')
user_obj = User(name="jack", password="jack") # 生成你要创建的数据对象
print(user_obj.name, user_obj.id) # 此时还没创建对象呢,不信你打印一下id发现还是None Session.add(user_obj) # 把要创建的数据对象添加到这个session里, 一会统一创建
print(user_obj.name, user_obj.id) # 此时也依然还没创建 Session.commit() # 现此才统一提交,创建数据
print('提交数据')
print(user_obj.name, user_obj.id) # 提交过,就会放在数据库里了。
# 插入结束
print('插入结束') # 查询开始
print('查询开始')
my_user = Session.query(User).filter_by(name="jack").first() # 查找name=jack的
print(my_user) # 这查出来是个对象
print(my_user.id, my_user.name, my_user.password)
# 查询结束
print('查询结束') # 删除开始
print('删除开始')
# 先插入一个,可以删的。
user_obj = User(name="rose", password="jack")
Session.add(user_obj)
Session.commit()
# 查找到需要删的对象
del_user = Session.query(User).filter_by(name="rose").first()
print(del_user.name)
Session.delete(del_user) # 删除命令
Session.commit() # 提交删除
find_user = Session.query(User).all()#查询表的全部内容
for i in find_user:
print(i.id, i.name)
# 删除结束 # 修改开始
print('修改开始')
my_user = Session.query(User).filter_by(name="jack").first() # 找到第一条名字是jack的,生成对象。
my_user.name = "jackadam" # 给对象变量命名
temp_id = my_user.id # 把这个对象的ID,赋值给临时变量temp_id
Session.commit() # 提交修改
my_user2 = Session.query(User).filter_by(id=temp_id).first() # 根据临时变量id,重新查询一下名字是否修改。
print(my_user2.name)
# 修改结束
print('修改结束')
# 多条件查询
objs = Session.query(User).filter(User.id > 0).filter(User.id < 7).all()
# 多条件查询 # 统计
print('统计')
count_num = Session.query(User).filter(User.name.like("ja%")).count()
print(count_num) # 统计 # 分组
print('分组')
from sqlalchemy import func print(Session.query(func.count(User.name), User.name).group_by(User.name).all())
# 分组
Session.close()#最后不忘close '''
orady_by
desc 升序
asc 降序
'''

注释很详细了,不写了

from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Integer, String engine = create_engine('mysql+mysqlconnector://plan:plan@mysql/plan', convert_unicode=True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property() class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(50))
email = Column(String(120)) def __init__(self, name=None, email=None):
self.name = name
self.email = email def __repr__(self):
return '<User %r>' % (self.name) def init_db():
# 在这里导入所有的可能与定义模型有关的模块,这样他们才会合适地
# 在 metadata 中注册。否则,您将不得不在第一次执行 init_db() 时
# 先导入他们。 Base.metadata.create_all(bind=engine) if __name__ == '__main__':
init_db()
print('C,创建数据')
new_user=User(name= 'rose',email='rose@163.com')
db_session.add(new_user)
db_session.commit()
db_session.remove()
print('R,读取数据')
new_user = User(name='jack', email='jack@163.com')
db_session.add(new_user)
db_session.commit()
db_session.remove()
msg=User.query.filter_by(name='jack').first()
print(msg.email)
print('U,更新数据')
tag_user=User.query.filter_by(name='jack').first()
tag_user.email='jack@hotmail.com'
db_session.commit()
db_session.remove()
tag=User.query.filter_by(name='jack').first()
print(tag.email)
print('D,删除数据')
del_user=User.query.filter_by(name='jack').first()
db_session.delete(del_user)
db_session.commit()
db_session.remove()

另一种简单的连接示例,http://docs.pythontab.com/flask/flask0.10/patterns/sqlalchemy.html

从flask使用sqlalchemy文档中学到的。

看了几个别人的代码,也是这样写的,用映射的类名来查询,不使用session。

sqlalchemy(二)简单的连接示例的更多相关文章

  1. MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习

    MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...

  2. unity Dotween插件的简单介绍及示例代码

    unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...

  3. Skinned Mesh原理解析和一个最简单的实现示例

    Skinned Mesh 原理解析和一个最简单的实现示例   作者:n5 Email: happyfirecn##yahoo.com.cn Blog: http://blog.csdn.net/n5 ...

  4. Python正则表达式的简单应用和示例演示

    前一阵子小编给大家连续分享了十篇关于Python正则表达式基础的文章,感兴趣的小伙伴可以点击链接进去查看.今天小编给大家分享的是Python正则表达式的简单应用和示例演示,将前面学习的Python正则 ...

  5. sqlalchemy(二)高级用法

    sqlalchemy(二)高级用法 本文将介绍sqlalchemy的高级用法. 外键以及relationship 首先创建数据库,在这里一个user对应多个address,因此需要在address上增 ...

  6. [MySQL5.6] 一个简单的optimizer_trace示例

    [MySQL5.6] 一个简单的optimizer_trace示例   前面已经介绍了如何使用和配置MySQL5.6中optimizer_trace(点击博客),本篇我们以一个相对简单的例子来跟踪op ...

  7. 百度APP移动端网络深度优化实践分享(二):网络连接优化篇

    本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网 ...

  8. wstngfw openVpn站点到站点连接示例(SSL/TLS)

    wstngfw openVpn站点到站点连接示例(SSL/TLS) 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Offi ...

  9. wstngfw openVpn站点到站点连接示例(共享密钥)

    wstngfw openVpn站点到站点连接示例(共享密钥) 在本例中,将假设以下设置: 站点 A 站点 B 名称 Beijing Office(北京办公室) 名称 Shenzheng Office( ...

随机推荐

  1. Django - models.py 应用

    Django - models.py 应用 编写 models.py 文件 from django.db import models # Create your models here. class ...

  2. VIM编辑器和VI编辑器的区别

    vi 和vim 的区别 写在前面:这个两个"东西"着实让我烦恼一阵子,但是自己一直没当回事,但是遇到了好几次再决定彻底把他们搞的明白,一下是我通过查找资料了解到的关于这两个编辑器的 ...

  3. (6)进程---Event事件

    # 阻塞事件 : e = Event()生成事件对象e e.wait()是给程序加阻塞 , 程序当中是否加阻塞完全取决于该对象中的is_set() [默认返回值是False] e.wait(2) 传参 ...

  4. ubuntu下安装Firefox中国版解决Ubuntu与Windows下Firefox账号同步问题(已解决)

    1. 下载最新版本火狐Linux版 下载地址:http://firefox.com.cn/download/ 选择火狐Linux64-bit版,下载后文件为:Firefox-latest-x86_64 ...

  5. liunx之用户管理

    用户管理 ==============================================================groupadd,groupdeluseradd,usermod, ...

  6. Apache Hadoop Operations at Scale

    book: Hadoop Operations,A Guide for Developers and Administrators Apache Hadoop Operations at Scale ...

  7. filebeat配置文件

    filebeat主要用于收集和转发日志.filebeat监视指定的日志文件和位置,收集日志事件,并将它们转发到es或logstash进行索引. 安装  官网:https://www.elastic.c ...

  8. 0.1.3 set的用法

    set的特性是,所有元素都会根据元素的键值自动排序,set的元素不像map那样可以同时拥有实值(value)和键值(key),set元素的键值就是实值,实值就是键值.set不允许两个元素有相同的键值. ...

  9. php 求余

    一,异号 1.函数值符号规律(余数的符号) mod(负,正)=正 mod(正,负)=负 结论:两个整数求余时,其值的符号为除数的符号. 2.取值规律 先将两个整数看作是正数,再作除法运算 ①能整除时, ...

  10. 转载-Mac下面的SecureCRT(附破解方案) 更新到最新的8.0.2

    原帖地址:http://bbs.feng.com/read-htm-tid-6939481.html,爱死楼主了,哈哈 真心感谢 继续更新到8.3.0的破解,整体的破解方案都发生了的变化首先还是去ht ...