ORM技术:Object-Relational Mapping,负责把关系数据库的表结构映射到对象上。

1.安装SQLAlchemy,MySQLdb模块

MySQLdb安装教程:http://www.cnblogs.com/jfl-xx/p/7299221.html

SQLAlchemy模块:

pip install sqlalchemy

2.初始化连接

 #!/usr/bin/env python
# -*- coding: utf-8 -*- from sqlalchemy import Column, create_engine
from sqlalchemy.types import *
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base # 连接数据库
sql_connect = 'mysql://user:password@hostname:port/database?charset=xx'
engine = create_engine(sql_connect)
# 创建DBSession类型:
DBSession = sessionmaker(bind=engine)

注:红色部分:数据库类型://用户名:口令@机器地址:端口号/数据库名?字符编码.

完整的则为:数据库类型+数据库驱动://用户名:口令@机器地址:端口号/数据库名?字符编码.

例子:sql_connect = 'mysql://root:123456@192.168.1.110:3306/mytest?charset=utf8'

3.自动建表

 #!/usr/bin/env python
# -*- coding: utf-8 -*- from sqlalchemy import Column
from sqlalchemy.types import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker # 连接数据库
sql_connect = 'mysql://user:password@hostname:port/datbase?charset=utf8'
engine = create_engine(sql_connect)
DBSession = sessionmaker(bind=engine)
# 创建对象的基类:
BaseModel = declarative_base() #定义对象
class User(BaseModel):
# 表名
__tablename__ = 'user'
# 表结构
id = Column(String(20), primary_key=True)
name = Column(String(20))
age = Column(Integer) #创建映射的数据库表
def init_db():
BaseModel.metadata.create_all(engine) #删除映射的数据库表
def drop_db():
BaseModel.metadata.drop_all(engine)

4.添加数据

 # 创建session对象,相当于MySQLdb里面的游标
session = DBSession()
# 创建新User对象:
new_user = User(id='', name='John', age=13)
# 添加到session:
session.add(new_user)
# 提交即保存到数据库
session.commit()
# 关闭session
session.close()

5.查询数据

在查询语句中的where子句用filter()替代,不过匹配的值需要用"==";如果使用filter_by(),则使用"="即可。

查询一条:

 # 创建Session:
session = DBSession()
# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
user = session.query(User).filter(User.name == 'John', User.age > 12).one()
# 打印类型和对象的name属性:
print 'type:', type(user)
print 'age:', user.age
# 关闭Session:
session.close()

查询多条:

  1 # 创建Session:
2 session = DBSession()
3 # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
4 users = session.query(User).filter(User.name == 'John').all()
5 # 打印类型和对象的name属性:
6 print 'type:', type(users)
7 for u in users:
8 print u.id
9 # 关闭Session:
10 session.close()

6.更新数据

方式一:

 # 创建Session:
session = DBSession()
# 可以进行多条数据更新
user = session.query(User).filter(User.id == '')
user.update({User.age: 14})
# 提交数据
session.commit()
# 关闭Session
session.close()

方式二:

# 创建Session:
session = DBSession()
# 可以进行多条数据更新
user = session.query(User).filter_by(id='5').one()
user.age = 16
# 提交数据
session.commit()
# 关闭Session
session.close()

7.删除数据

 # 创建Session
session = DBSession()
# 删除哪些数据
user = session.query(User).filter(User.id == '').one()
session.delete(user)
# 提交数据
session.commit()
# 关闭session
session.close()

python使用SQLAlchemy模块连接MySQL的更多相关文章

  1. python使用MySQLdb模块连接MySQL

    1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...

  2. Python 2.7_初试连接Mysql查询数据导出到excel_20161216

    由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码初次试验,边摸索边学习吧. xlsx ...

  3. Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库

    最近所写的代码中需要用到python去连接MySql数据库,因为是用PyQt5来构建的GUI,原本打算使用PyQt5中的数据库连接方法,后来虽然能够正确连接上发现还是不能提交修改内容,最后在qq交流群 ...

  4. python在windows下连接mysql数据库

    一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...

  5. python 通过 pymysql模块 操作 mysql 数据库

    Python 中操作 MySQL 步骤 安装模块 pip install pymysql 引入模块 在py文件中引入pymysql模块 from pymysql import * Connection ...

  6. Python(Django) 连接MySQL(Mac环境)

    看django的文档,详细的一塌糊涂,这对文档来时倒是好事,可是数据库连接你别一带而过啊.感觉什么都想说又啥都没说明白,最有用的一句就是推荐mysqlclient.展开一个Django项目首先就是成功 ...

  7. Python安装MySQLdb并连接MySQL数据库

    当然了,前提是你已经安装了Python和MySQL.我的Python是2.6版本的. Python2.6的“Set”有点兼容性问题,自己照着改一下: http://sourceforge.net/fo ...

  8. 我的python开发目录模块连接

    一.python语言 二.HTML 三.css 四.javascript 五.DOM 六.jquery 七.AJAX 八.WEB前端插件 九.自定义WEB框架 十.WEB框架之tornado 十一.M ...

  9. Python使用cx_Oracle模块连接操作Oracle数据库

    1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...

随机推荐

  1. HDU 5583 Kingdom of Black and White(暴力)

    http://acm.hdu.edu.cn/showproblem.php?pid=5583 题意: 给出一个01串,现在对这串进行分组,连续相同的就分为一组,如果该组内有x个数,那么就对答案贡献x* ...

  2. vue动态改变样式

    <i class="el-icon-arrow-left" :style="{'color': deadColorArr[index]}" @click= ...

  3. react native 渐变组件 react-native-linear-gradient

    github:  https://github.com/react-native-community/react-native-linear-gradient 安装:yarn add  react-n ...

  4. mongodb,Mysql,redis基础教程

    数据库基础 1:mongodb基础教程 1:pymongo基础教程  2:Mysql基础教程 3:redis基础教程

  5. hibernate事务规范写法

    @Test public void testTx() { SessionFactory sessionFactory = null; Session session = null; Transacti ...

  6. 深入理解 java I/O

    Java 的 I/O 类库的基本架构 I/O 问题是任何编程语言都无法回避的问题,可以说 I/O 问题是整个人机交互的核心问题,因为 I/O 是机器获取和交换信息的主要渠道.在当今这个数据大爆炸时代, ...

  7. OMShell常用命令及遇到的问题

    仿真并画图: loadModel(Modelica); loadFile ("C:/Users/wen/Desktop/TCS.mo"); simulate(TCS.TCS,sta ...

  8. adb shell命令后出现error: device not found错误提示

    在cmd中输入adb shell进入linux shell环境前,需要把android模拟器打开(本文都是针对模拟器而言,并非真机).如果启动好了模拟器,且输入adb shell命令后出现error: ...

  9. Vue中ESlint配置文件eslintrc.js文件详解

    最近在跟着视频敲项目时,代码提示出现很多奇奇怪怪的错误提示,百度了一下是eslintrc.js文件没有配置相关命令,ESlint的语法检测真的令人抓狂,现在总结一下这些命令的解释,方便以后查阅. 默认 ...

  10. 录音 voice record

    参考 : http://air.ghost.io/recording-to-an-audio-file-using-html5-and-js/ (html5 基础) https://github.co ...