1. result = engine.execute(s)
  2. for row in result:
  3. Info["UserId"]=row[0]
  4. Info["UserTitle"] = row[1]
  5. Info["UserCode"] = row[2]
  6. Info["UserType"] = row[3]
  7. result.close()

返回的result为一个元组,



echo设置为True,目的是SqlAlchemy将会把执行sql命令的过程输出到标准输出。这主要是便于调试,但如果是用于生产环境中应该设置为False。

客户端连接到数据库postgresql:
客户端connect >sqlalchemy->psycopg2->DBAPI->postgresql

engine = create_engine('postgresql+psycopg2://postgres:root@localhost:5432/ttt', echo=True)
创建引擎:指定     要连接的数据库+数据库接口://帐号:密码@localhost:5432/数据库名称 

metadata元数据,实例化metadata,绑定到engine上,相当于初始化了表结构

user = Table('book',metadata,
Column('id',Integer,primary_key=True),
Column('name',String(20)),
)
用Table来创建表,表的名称,类型,字段定义
user不是表名,是数据表book对应的类名

metadata.create_all(checkfirst=True)
创建数据表,checkfirst=True,数据库相关对象已经存在的化就不会在创建了

定义列   查询行

When we use literal(文字的) strings, the Core can’t adapt(适应) our SQL to work on different database backends. 
也就是不推荐使用原生sql查询


插入数据:

最方便的插入

user.insert().execute([{'id':6,'name':'1183532@qq.com'},{'id':5,'name':'118352@qq.com'}])
user.insert().execute(id=7, name='hello')


删除指定数据:
coon.execute(user.delete().where(user.c.id == 7))
清空表中的数据:
coon.execute(user.delete())

更新数据:
s = user.update().where(user.c.id == 7).values(name='say hello')
r = coon.execute(s)

查询数据:
s = select([user.c.name,user.c.id])
result = coon.execute(s)
for row in result:
print row
s = select([user,])
result = coon.execute(s)
for row in result:
print row




#coding:utf-8
from sqlalchemy import create_engine
from sqlalchemy import MetaData,Column,Sequence,ForeignKey,Integer
from sqlalchemy import Table,String
from sqlalchemy.sql import select,text
engine = create_engine('postgresql+psycopg2://postgres:root@localhost:5432/ttt', echo=True)
metadata = MetaData()
metadata.bind = engine
#数据库表与对象之间的映射关系
user = Table('book',metadata,
Column('id',Integer,primary_key=True),
Column('name',String(20)),
)
address = Table('address',metadata,
Column('id',Integer,primary_key=True),
Column('user_id',None,ForeignKey('user.id')),
Column('email',String(60),nullable=False),
)
#创建数据表
metadata.create_all(checkfirst=True)






















































































运用SQLAlchemy的更多相关文章

  1. sqlalchemy学习

    sqlalchemy官网API参考 原文作为一个Pythoner,不会SQLAlchemy都不好意思跟同行打招呼! #作者:笑虎 #链接:https://zhuanlan.zhihu.com/p/23 ...

  2. tornado+sqlalchemy+celery,数据库连接消耗在哪里

    随着公司业务的发展,网站的日活数也逐渐增多,以前只需要考虑将所需要的功能实现就行了,当日活越来越大的时候,就需要考虑对服务器的资源使用消耗情况有一个清楚的认知.     最近老是发现数据库的连接数如果 ...

  3. 冰冻三尺非一日之寒-mysql(orm/sqlalchemy)

    第十二章  mysql ORM介绍    2.sqlalchemy基本使用 ORM介绍: orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似pyt ...

  4. Python 【第六章】:Python操作 RabbitMQ、Redis、Memcache、SQLAlchemy

    Memcached Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度 ...

  5. SQLAlchemy(一)

    说明 SQLAlchemy只是一个翻译的过程,我们通过类来操作数据库,他会将我们的对应数据转换成SQL语句. 运用ORM创建表 #!/usr/bin/env python #! -*- coding: ...

  6. sqlalchemy(二)高级用法

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

  7. sqlalchemy(一)基本操作

    sqlalchemy(一)基本操作 sqlalchemy采用简单的Python语言,为高效和高性能的数据库访问设计,实现了完整的企业级持久模型. 安装 需要安装MySQLdb pip install ...

  8. python SQLAlchemy

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

  9. Python-12-MySQL & sqlalchemy ORM

    MySQL MySQL相关文章这里不在赘述,想了解的点击下面的链接: >> MySQL安装 >> 数据库介绍 && MySQL基本使用 >> MyS ...

  10. 20.Python笔记之SqlAlchemy使用

    Date:2016-03-27 Title:20.Python笔记之SqlAlchemy使用 Tags:python Category:Python 作者:刘耀 博客:www.liuyao.me 一. ...

随机推荐

  1. 用C/C++扩展你的PHP 为你的php增加功能

    英文版下载: PHP 5 Power Programming http://www.jb51.net/books/61020.html PHP取得成功的一个主要原因之一是她拥有大量的可用扩展.web开 ...

  2. 编写Nginx启停服务脚本

    在/etc/init.d/目录下创建脚本 vim /etc/init.d/nginx 编写脚本内容:(其中下面2行需要根据情况自行修改) nginxd=/opt/nginx/sbin/nginx ng ...

  3. 下列哪一个接口定义了用于查找、创建和删除EJB实例

    下列哪一个接口定义了用于查找.创建和删除EJB实例 A.Home B.Remote C.Local D.Message 解答:A remote接口定义了业务方法,用于EJB客户端调用业务方法. hom ...

  4. 2017-2018 ACM-ICPC, NEERC, Northern Subregional Contest D Dividing Marbles

    题目大意: 给出一个$N(N <= 2^{22}$),$N$的二进制表示中1的个数不超过4.  一开始有一个集合$S = {N}$, 每次操作可以选择$n\in S \ (n > 1)$, ...

  5. 【vijos】1729 Knights(匈牙利)

    https://vijos.org/p/1729 这题好奇葩,为嘛N开到30就会re啊..........n<=26吗.... sad 因为根据棋子的分布,能攻击的一定各在一黑白格上,所以直接二 ...

  6. 【vijos】1781 同余方程(拓展欧几里得)

    https://vijos.org/p/1781 学习了下拓欧.. 求exgcd时,因为 a*x1+b*y1=a*x2+b*y2=b*x2+(a-b*[a/b])*y2 然后移项得 a*x1+b*y1 ...

  7. ubuntu14.04安装vmware workstation

    0) Do the basic system installation of Ubuntu 14.04 LTS (Server or Desktop) 1) wget the installer wg ...

  8. [读书笔记]java核心技术

    ps:有时间好好整理下格式.从别的编辑器拷贝过来啥都没了. ~~~~~~~~~~~~~~· 2.java程序设计环境 JDK 开发java使用的软件: JRE 运行java使用的软件: SE 用于桌面 ...

  9. IOS无限自动循环滚动banner(源码)

    本文转载至 http://blog.csdn.net/iunion/article/details/19080259  目前有很多APP都开始使用一些滚动banner,我自己也做了一个,部分算法没有深 ...

  10. thinkphp 模板里嵌入 php代码

    <php> echo 'nihao';</php><?phpecho 'gge';?> Php代码可以和标签在模板文件中混合使用,可以在模板文件里面书写任意的PHP ...