python使用SQLAlchemy模块连接MySQL
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的更多相关文章
- python使用MySQLdb模块连接MySQL
1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...
- Python 2.7_初试连接Mysql查询数据导出到excel_20161216
由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码初次试验,边摸索边学习吧. xlsx ...
- Python 使用PyMySql 库 连接MySql数据库时 查询中文遇到的乱码问题(实测可行) python 连接 MySql 中文乱码 pymysql库
最近所写的代码中需要用到python去连接MySql数据库,因为是用PyQt5来构建的GUI,原本打算使用PyQt5中的数据库连接方法,后来虽然能够正确连接上发现还是不能提交修改内容,最后在qq交流群 ...
- python在windows下连接mysql数据库
一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.M ...
- python 通过 pymysql模块 操作 mysql 数据库
Python 中操作 MySQL 步骤 安装模块 pip install pymysql 引入模块 在py文件中引入pymysql模块 from pymysql import * Connection ...
- Python(Django) 连接MySQL(Mac环境)
看django的文档,详细的一塌糊涂,这对文档来时倒是好事,可是数据库连接你别一带而过啊.感觉什么都想说又啥都没说明白,最有用的一句就是推荐mysqlclient.展开一个Django项目首先就是成功 ...
- Python安装MySQLdb并连接MySQL数据库
当然了,前提是你已经安装了Python和MySQL.我的Python是2.6版本的. Python2.6的“Set”有点兼容性问题,自己照着改一下: http://sourceforge.net/fo ...
- 我的python开发目录模块连接
一.python语言 二.HTML 三.css 四.javascript 五.DOM 六.jquery 七.AJAX 八.WEB前端插件 九.自定义WEB框架 十.WEB框架之tornado 十一.M ...
- Python使用cx_Oracle模块连接操作Oracle数据库
1. 简单介绍 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包含 Oracle 9.2 10.2 以及 11.1 等版本号 2.安装 最好是去官网h ...
随机推荐
- win7 "com surrogate“ 已停止工作的解决办法
1.在文件夹选项里选“始终显示图标,从不显示缩略图”. 2.数据执行保护(DEB),依次打开:计算机——属性——高级系统设置——高级——性能——设置——数据执行保护 选下面的单选按钮“为除下列选定程序 ...
- 2、corosync集群初步
配置高可用集群 配置环境:两台centos7 192.168.184.141 192.168.184.142 corosync v2 + pacemaker corosync v2:vote sys ...
- 3、Python编程之MySQLdb模块(0602)
解释器环境与选项 python解释器启动 python [options] [ -c cmd | filename | - ] [ args ] python解释器环境变量 python代码的测试.调 ...
- 【Python】【Web开发】
# [[Web开发]] ''' 最早的软件都是运行在大型机上的,软件使用者通过“哑终端”登陆到大型机上去运行软件.后来随着PC机的兴起,软件开始主要运行在桌面上,而数据库这样的软件运行在服务器端,这种 ...
- python连接MongoDB(有密码有认证)
from pymongo import MongoClient host = '127.0.0.1' client = MongoClient(host, ) #连接mydb数据库,账号密码认证 db ...
- 一:requests爬虫基础
一,什么是爬虫? 描述: 本质是一个自动化程序,一个模拟浏览器向某一个服务器发送请求获取响应资源的过程. 爬虫的基本流程 robots.txt协议 编写一个robots.txt的协议文件来约束爬虫程序 ...
- sqlserver 中通配符%和_的使用
--以a开头的数据 SELECT * FROM BCUSTOMER_MZN WHERE CST_NAME LIKE 'A%' --以Z结尾的数据 SELECT * FROM BCUSTOMER_MZN ...
- idea创建web聚合工程(2)
参考文档: intelj idea 创建聚合项目(典型web项目,包括子项目util.dao.service) 使用IntelliJ IDEA创建Maven聚合工程.创建resources文件夹.ss ...
- ArrayList list = new ArrayList()在这个泛型为Integer的ArrayList中存放一个String类型的对象
java面试要点---ArrayList list = new ArrayList(); 在这个泛型为Integer的ArrayList中存放一个String类型的对象. ArrayList list ...
- ubuntu 中文设置
1,安装中文语言包 sudo apt-get install language-pack-zh-hans sudo update-locale LANG=zh_CN.UTF-8 添加中文支持: sud ...