Python SqlAlchemy数据库持久化使用方法
来源:互联网 发布:数据库系统的二级映射 编辑:程序博客网 时间:2024/06/09 23:40
SqlAlchemy版本:1.1.11
操作系统:Windows
Python:3.5
欢迎加入学习交流QQ群:657341423
数据持久化是常用的开发技术。具体有点请参考百度百科:请点击
Python的数据库ORM框架是数据持久层框架。这只是其中一种框架,还有其他的框架,请参考
总的来说,在实际开发中,需要不停的对数据库进行连接和操作,最基本的就是连接数据库,然后通过sql语句进行增删改,提交事务,关闭连接。这当然是最入门的做法。性能也是最差的。
这时候就引入了数据持久层的方法。
本文介绍python中最流行的SQLAlchemy框架的使用。
安装:直接用pip install SQLAlchemy即可
使用方法:
创建链接:
from sqlalchemy import create_engineengine=create_engine('sqlite:////MyDB.sqlite3',echo=True)
这里的创建是告诉SQLAlchemy你的数据库文件的路径。这里sqlite:////MyDB.sqlite3,py文件和MyDB.sqlite3是同一个目录下,如果不同目录,需要写上路径。
echo=False(True),在运行py文件的时候是不显示(显示)Sql执行情况。这个可以自己试试。
这里列出一系列的数据库链接方式:
例:
mysql://root:pass/testroot是用户名 pass密码 test数据库
明确了路径和相关的数据库名之后,就是建立会话。也可以理解为sql的游标
from sqlalchemy.orm import sessionmakerDBSession = sessionmaker(bind=engine)session = DBSession()
然后就是创建对象类
from sqlalchemy.ext.declarative import declarative_baseBase=declarative_base()
因为持久化都是将数据库的字段转化成代码里面类的属性来表示的。
创建表
from sqlalchemy import create_engine,Column,String,Integerclass Mybase(Base): #表名 __tablename__ ='mycars' #字段,属性 myid=Column(String(50), primary_key=True) price=Column(String(50))
创建对象之后,但是在数据库里面还没生成该表。可以自定义一个方法:
def CreatDb(): #创建表 Base.metadata.create_all(engine)
def delDb(): #删除表 Base.metadata.drop_all(engine)
添加数据
dt=Mybase(myid='aaa',price="aaa")session.add(dt)session.commit()
修改数据
#根据新增后再修改dt.price='aaaaa'#提交数据库session.commit()
#查找符合条件数据再修改,filter_by是一个list,first()表示第一个ModifyDt=session.query(Mybase).filter_by(myid='asd').first()#修改数据ModifyDt.price='ccccc'#提交数据库session.commit()
查询数据
查询数据是用filter_by,上一代码就是查询后再修改数据。
如果多条件查询,使用多次filter_by即可
querydt=session.query(Mybase).filter(Mybase.myid == 'asd').filter(Mybase.price == 'bbbb')for i in querydt: print(i.myid)
全部代码:
from sqlalchemy import create_engine,Column,String,Integerfrom sqlalchemy.orm import sessionmakerfrom sqlalchemy.ext.declarative import declarative_base#建立链接engine=create_engine('sqlite:////Mydb.sqlite3',echo=False)#建立会话DBSession = sessionmaker(bind=engine)session = DBSession()Base=declarative_base()class Mybase(Base): #表名 __tablename__ ='mycars' #字段,属性 myid=Column(String(50), primary_key=True) price=Column(String(50))def CreatDb(): #创建表 Base.metadata.create_all(engine)def delDb(): #删除表 Base.metadata.drop_all(engine)#创建表 CreatDb()#添加数据dt=Mybase(myid='aaa',price="aaa")session.add(dt)session.commit()#修改数据dt.price='aaaaa'session.commit()#查询后修改ModifyDt=session.query(Mybase).filter_by(myid='asd').first()ModifyDt.price='bbbb'session.commit()#多条件查询,这里注意的是filter_by和filter的区别,filter可以多表查询。比较运算符也不一样。filter必需带表名querydt=session.query(Mybase).filter(Mybase.myid == 'asd').filter(Mybase.price == 'bbbb')for i in querydt: print(i.myid)
运算结果:
此外还有很多数据库操作。这个可以参考官方文档:请点击
注意:不同SqlAlchemy版本而且版本相差较大的,在语法上会有不同的区别。
- Python SqlAlchemy数据库持久化使用方法
- python数据库操作SQLAlchemy
- 使用Python数据库ORM SQLAlchemy
- Python:数据库操作模块SQLAlchemy
- Python:数据库操作模块SQLAlchemy
- python Flask-SQLAlchemy操作数据库
- python Flask-SQLAlchemy 连接数据库
- Python:数据库操作模块SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- Python的数据库ORM框架:SQLAlchemy
- python 访问数据库 SQLAlchemy中的Query方法
- python与数据库sqlalchemy框架简述
- Python Flask 中用 SQLAlchemy 访问 Mysql 数据库
- 采用python中SQLalchemy模块访问数据库
- Python的数据库ORM框架:SQLAlchemy
- Python SQLAlchemy
- python sqlalchemy
- 237. Delete Node in a Linked List(C语言版本)
- 相对路径面试题
- php 发送邮件教程 发送邮件附带附件 利用PHPMailer发送邮件教程
- Qt自定义加载控件Spinner
- 写的程序出现"open clipboard失败"的解决办法
- Python SqlAlchemy数据库持久化使用方法
- java 事件与委托
- Eclipse注释模板设置详解
- 最长公共前缀 -LintCode
- Python标准模块--ContextManager(上下文管理器)
- markDown的使用技巧--空格缩进、颜色
- redis 报错 Redis protected-mode 配置文件没有真正启动
- 设计模式-观察者模式
- Android Butterknife 8.4.0 使用方法总结