运用SQLAlchemy
2024-10-21 17:24:55
result = engine.execute(s)
for row in result:
Info["UserId"]=row[0]
Info["UserTitle"] = row[1]
Info["UserCode"] = row[2]
Info["UserType"] = row[3]
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)
最新文章
- oracle user account locked
- linux在shell date获取时间的相关操作
- es6新特性
- 微软职位内部推荐-Software Engineer II-Web app
- Eclipse Java EE 编译器设置JSP默认编码
- nginx的配置,要求根据不同的来路域名,发送到不同的端口去处理
- Sicily 1021. Couples
- podoWeb极品流氓软件
- Hibernate之工具类HibernateUtil
- c#和java中的方法覆盖——virtual、override、new
- javascript之自增自减典型运算(易错)
- 【flex弹性盒布局】------这个强大的功能
- Directory Opus(DO) 个人使用经验 2.0
- 帆软认证BI工程师FCBA-部分题目
- firewall-cmd.man
- lsof一些使用
- 测试思想-流程规范 SVN代码管理与版本控制
- ByteArrayInputStream与ByteArrayOutputStream_操作数组的流
- mysql-utilities1.6
- linux基础01-bash特性
热门文章
- hdu6055 Regular polygon 脑洞几何 给定n个坐标(x,y)。x,y都是整数,求有多少个正多边形。因为点都是整数点,所以只可能是正四边形。
- Java反射小结
- JQ实现小火箭效果
- UFLDL深度学习笔记 (二)SoftMax 回归(矩阵化推导)
- 在一个千万级的数据库查寻中,如何提高查询效率?分别说出在数据库设计、SQL语句、java等层面的解决方案。
- C#实现反射调用动态加载的DLL文件中的方法
- iOS开发中“此证书的签发者无效”的解决方式
- 重写ListView解决ListView内部ViewPaper滑动事件冲突问题
- 蓝桥杯 第三届C/C++预赛真题(3) 比酒量(数学题)
- 怎么用ChemDraw 15.1 Pro绘制彩色结构