zoukankan      html  css  js  c++  java
  • 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.初始化连接

     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:password@hostname:port/database?charset=xx'
    11 engine = create_engine(sql_connect)
    12 # 创建DBSession类型:
    13 DBSession = sessionmaker(bind=engine)

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

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

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

    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://user:password@hostname:port/datbase?charset=utf8'
    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()
  • 相关阅读:
    澳洲中产收入水平[转]
    [转载]在澳洲做IT人士的收入差别
    取消excel 工作保护 密码的宏
    SAP ML 物料分类账详解(含取消激活物料帐方法)
    ABAP--如何创建自定义打印条码
    SAP 产品条码WMS结合 以及ABAP script的集成 BarCode
    SAP 以工序为基准进行发料 机加工行业 Goods Issue to Routing
    SAP HR模块的基础数据表和增强配置
    SAP财务供应链与金库管理的联系与区别
    评点SAP HR功能及人力资源管理软件
  • 原文地址:https://www.cnblogs.com/jfl-xx/p/7306923.html
Copyright © 2011-2022 走看看