【python学习笔记】python使用sqlalchemy连接mysql数据库

来源:互联网 发布:网络推广属于什么岗位 编辑:程序博客网 时间:2024/05/01 08:21

python使用sqlalchemy连接mysql数据库

sqlalchemy是python当中比较出名的orm程序。

什么是orm?

orm英文全称object relational mapping,就是对象映射关系程序,简单来说我们类似python这种面向对象的程序来说一切皆对象,但是我们使用的数据库却都是关系型的,为了保证一致的使用习惯,通过orm将编程语言的对象模型和数据库的关系模型建立映射关系,这样我们在使用编程语言对数据库进行操作的时候可以直接使用编程语言的对象模型进行操作就可以了,而不用直接使用sql语言。

什么是sqlalchemy?

sqlalchemy是python的orm程序,在整个python界当中相当出名。

安装sqlalchemy

$ pip install sqlalchemy

导入必要的库文件

#!/usr/bin/python# -*- coding: utf-8 -*-from sqlalchemy import Column, String, create_engine, ForeignKeyfrom sqlalchemy.orm import sessionmaker, relationshipfrom sqlalchemy import Columnfrom sqlalchemy.types import CHAR, Integer, Stringfrom sqlalchemy.ext.declarative import declarative_base

创建对象的基类

# 创建对象的基类:Base = declarative_base()

定义各个表的类

# 定义User对象:class User(Base):    # 表的名字:    __tablename__ = 'user'    # 表的结构:    id = Column(Integer, primary_key=True)    name = Column(String(20))    psw = Column(String(20))    books = relationship('Book')    def __init__(self, id, name,psw):        self.id = id        self.name = name        self.psw = psw    def __repr__(self):        return '<User %r>' % self.nameclass Book(Base):    __tablename__ = 'book'    id = Column(Integer, primary_key=True)    book_name = Column(String(20))    # “多”的一方的book表是通过外键关联到user表的:    user_id = Column(String(20), ForeignKey('user.id'))    def __init__(self, id, book_name, user_id):        self.id = id        self.book_name = book_name        self.user_id = user_id    def __repr__(self):        return '<User %r>' % self.name

初始化数据库连接

# 初始化数据库连接:engine = create_engine('mysql+mysqlconnector://root:root@localhost:3306/user')# 创建DBSession类型:DBSession = sessionmaker(bind=engine)

创建session,应用

session = DBSession()# 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:# user = session.query(User).outerjoin(Book).filter(Book.user_id == '2').one()#连表查询  定义好主键user = session.query(User).join(Book, Book.user_id == User.id).filter(Book.user_id == '2').one()#连表查询  自己指定连接book = session.query(Book).join(User, Book.user_id == User.id).filter(Book.user_id == '2').one()#连表查询  自己指定连接print user.nameprint book.book_name# 关闭Session:session.close()








0 0
原创粉丝点击