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)






















































































最新文章

  1. oracle user account locked
  2. linux在shell date获取时间的相关操作
  3. es6新特性
  4. 微软职位内部推荐-Software Engineer II-Web app
  5. Eclipse Java EE 编译器设置JSP默认编码
  6. nginx的配置,要求根据不同的来路域名,发送到不同的端口去处理
  7. Sicily 1021. Couples
  8. podoWeb极品流氓软件
  9. Hibernate之工具类HibernateUtil
  10. c#和java中的方法覆盖——virtual、override、new
  11. javascript之自增自减典型运算(易错)
  12. 【flex弹性盒布局】------这个强大的功能
  13. Directory Opus(DO) 个人使用经验 2.0
  14. 帆软认证BI工程师FCBA-部分题目
  15. firewall-cmd.man
  16. lsof一些使用
  17. 测试思想-流程规范 SVN代码管理与版本控制
  18. ByteArrayInputStream与ByteArrayOutputStream_操作数组的流
  19. mysql-utilities1.6
  20. linux基础01-bash特性

热门文章

  1. hdu6055 Regular polygon 脑洞几何 给定n个坐标(x,y)。x,y都是整数,求有多少个正多边形。因为点都是整数点,所以只可能是正四边形。
  2. Java反射小结
  3. JQ实现小火箭效果
  4. UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)
  5. 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
  6. C#实现反射调用动态加载的DLL文件中的方法
  7. iOS开发中“此证书的签发者无效”的解决方式
  8. 重写ListView解决ListView内部ViewPaper滑动事件冲突问题
  9. 蓝桥杯 第三届C/C++预赛真题(3) 比酒量(数学题)
  10. 怎么用ChemDraw 15.1 Pro绘制彩色结构