美文网首页
python SQLAlchemy

python SQLAlchemy

作者: 三元一只十元三只 | 来源:发表于2020-04-30 09:45 被阅读0次

参考的是廖雪峰的python教程:https://www.liaoxuefeng.com/wiki/1016959663602400/1017803857459008

我们前面了解到了python连接mysql,用的是官方的mysql-connector,直接写sql语句。今天来学习另一种新的连接数据库方法。用到了ORM技术,ORM就是把数据库的表结构映射到对象上,这个对象是自定义的。 首先安装 SQLAlchemy

pip install sqlalchemy

先看下完整的例子

from sqlalchemy import Column,String,create_engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base

# Base是对象基类
Base = declarative_base()

#定义对象,用于被映射数据库结构
class User(Base):
    __tablename__ = 'user'

    id = Column(String(20), primary_key=True)
    name = Column(String(20))

engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')
DBSession = sessionmaker(bind=engine)

tablename 是要连接的数据库表名
create_engine是连接数据库的信息:
格式为:'数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'
下面的代码展示了如何往数据表里添加一条记录:

session = DBSession()

new_user = User(id='5', name='Bob')
session.add(new_user)
session.commit()
session.close()

对于数据表的连接, sqlalchemy 也提供了很好的实现方式, 我直接把例子引用过来

class User(Base):
    __tablename__ = 'user'

    id = Column(String(20), primary_key=True)
    name = Column(String(20))
    # 一对多:
    books = relationship('Book')

class Book(Base):
    __tablename__ = 'book'

    id = Column(String(20), primary_key=True)
    name = Column(String(20))
    # “多”的一方的book表是通过外键关联到user表的:
    user_id = Column(String(20), ForeignKey('user.id'))

相关文章

网友评论

      本文标题:python SQLAlchemy

      本文链接:https://www.haomeiwen.com/subject/nwpawhtx.html