python使用SQLAlchemy模块连接MySQL

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

1.安装SQLAlchemy模块

pip install sqlalchemy

2.初始化连接

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3
 4 from sqlalchemy import Column, create_engine
 5 from sqlalchemy.types import *
 6 from sqlalchemy.orm import sessionmaker
 7 from sqlalchemy.ext.declarative import declarative_base
 8
 9 # 连接数据库
10 sql_connect = ‘mysql://user:[email protected]:port/database‘
11 engine = create_engine(sql_connect)
12 # 创建DBSession类型:
13 DBSession = sessionmaker(bind=engine)

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

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

3.自动建表

 1 #!/usr/bin/env python
 2 # -*- coding: utf-8 -*-
 3
 4 from sqlalchemy import Column
 5 from sqlalchemy.types import *
 6 from sqlalchemy.ext.declarative import declarative_base
 7 from sqlalchemy import create_engine
 8 from sqlalchemy.orm import sessionmaker
 9
10 # 连接数据库
11 sql_connect = ‘mysql://ruser:[email protected]:port/datbase‘
12 engine = create_engine(sql_connect)
13 DBSession = sessionmaker(bind=engine)
14 # 创建对象的基类:
15 BaseModel = declarative_base()
16
17 #定义对象
18 class User(BaseModel):
19     # 表名
20     __tablename__ = ‘user‘
21     # 表结构
22     id = Column(String(20), primary_key=True)
23     name = Column(String(20))
24     age = Column(Integer)
25
26 #初始化数据库
27 def init_db():
28     BaseModel.metadata.create_all(engine)
29
30 #删除所有数据表
31 def drop_db():
32     BaseModel.metadata.drop_all(engine)

4.添加数据

 1 # 创建session对象,相当于MySQLdb里面的游标
 2 session = DBSession()
 3 # 创建新User对象:
 4 new_user = User(id=‘2‘, name=‘John‘, age=13)
 5 # 添加到session:
 6 session.add(new_user)
 7 # 提交即保存到数据库
 8 session.commit()
 9 # 关闭session
10 session.close()

5.查询数据

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

查询一条:

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

查询多条:

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

6.更新数据

方式一:

1 # 创建Session:
2 session = DBSession()
3 # 可以进行多条数据更新
4 user = session.query(User).filter(User.id == ‘5‘)
5 user.update({User.age: 14})
6 # 提交数据
7 session.commit()
8 # 关闭Session
9 session.close()

方式二:

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

7.删除数据

1 # 创建Session
2 session = DBSession()
3 # 删除哪些数据
4 user = session.query(User).filter(User.id == ‘6‘).one()
5 session.delete(user)
6 # 提交数据
7 session.commit()
8 # 关闭session
9 session.close()
时间: 2024-11-08 17:21:03

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

python在windows下连接mysql数据库

一,安装MySQL-python python 连接mysql数据库需要 Python interface to Mysql包,包名为 MySQL-python ,PyPI上现在到了1.2.5版本.MySQL-python在windows下是通过.exe文件的installer安装的, 前提是已经安装的python需要写入注册表,参考这篇文章:windows安装python2.7后的注册(registry)问题. 然后开始安装MySQL-python,不过这里有个坑,从PyPI上下载的MySQL

Python 2.7_初试连接Mysql查询数据导出到exce_20161216

由于每天到公司都需要先执行一遍检测操作,观察数据是否导入完整,今天想到能否自动连接Mysql执行SQL并导出数据,每天到公司直接查看excel文件即可 时间紧,代码以及excel格式还没有调,初次试验,边摸索边学习吧.sql代码那句总想能不能用个变量代替,显得太冗长了 #coding:utf-8 import MySQLdb import xlsxwriter import datetime import os today = datetime.date.today() oldfile='dem

我的python开发目录模块连接

一.python语言 二.HTML 三.css 四.javascript 五.DOM 六.jquery 七.AJAX 八.WEB前端插件 九.自定义WEB框架 十.WEB框架之tornado 十一.MYSQL 十二.PYMYSQL 十三.git版本控制 十四.SQLalchemy 十五.rabbitmq 十六.WEB框架之Django

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

看django的文档,详细的一塌糊涂,这对文档来时倒是好事,可是数据库连接你别一带而过啊.感觉什么都想说又啥都没说明白,最有用的一句就是推荐mysqlclient.展开一个Django项目首先就是成功连接数据库然后安装顶层应用.那链接数据库就分两点: 首先你的python环境可以连接到你的mysql环境. 把数据库参数写到Django配置文件中. 第二点文档写的很明白了照做即可,关键是小弟没用python连过mysql啊.当年用php的时候哪有这么多事,一键搭建环境舒服的不行,部署也就是FTP传

python脚本——一种连接mysql数据库的方法(取回数据为list非tuple格式)并将数据写入TXT

python连接数据库有几种方法,但是对于从数据库取回的数据格式却有些不同,取回为tuple格式的数据处理起来比较麻烦,接下来介绍一种取回为list格式的连接方法,list格式数据处理和使用起来比较方便. #!/usr/bin/python# -*- coding: utf-8 -*-#!/usr/bin/env pythonimport MySQLdbfrom commands import getstatusoutput, getoutputimport sys reload(sys)sys

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

1. 简介 cx_Oracle 是一个用来连接并操作 Oracle 数据库的 Python 扩展模块, 支持包括 Oracle 9.2 10.2 以及 11.1 等版本 2.安装 最后是去官网http://cx-oracle.sourceforge.net/上下载安装,我自己通过pip和easy install安装都失败了,我是在win8.1的环境下安装的 3.使用 使用就很简单,以下为代码示例 #!/usr/bin/env python #-*- coding:utf-8 -*- import

python使用cx_oracle模块连接oracle数据库

软件版本:我用的是python3.7,数据库是oracle12c,cx-oracle7.0 首先安装cx-oracle7.0模块,可以使用pip安装,win+r打开运行,输入cmd,启动命令提示符,在命令提示符里输入pip install cx_Oracle 安装完成后在python交互界面输入import cx_Oracle,结果如下图,即说明安装成功. 下面就是程序的代码了: 1 import cx_Oracle #导入模块 2 3 conn=cx_Oracle.connect("c##sc

Python学习笔记-pyMySQL连接MySQL数据库

下载pyMySQL模块包 [[email protected] ~]# python36 -m pip install pyMySQL Collecting pyMySQL   Downloading PyMySQL-0.7.11-py2.py3-none-any.whl (78kB)     100% |################################| 81kB 8.9kB/s  Installing collected packages: pyMySQL Successfu

使用Nodejs的mysql模块连接MySql数据库出现以下错误

C:\Users\horn1\Desktop\node.js\39>node express.js { Error: Handshake inactivity timeout at Handshake.<anonymous> (C:\Users\horn1\Desktop\node.js\39\node_modules\mysql\lib\protocol\Protocol.js:164:17) at emitNone (events.js:105:13) at Handshake.em