python使用数据库

发布时间:2019-07-13 11:39:20编辑:auto阅读(1306)

    使用python-DB-API,只需要搞清楚Connection、Cursor对象,打开后一定得关闭。


    Cursor对象执行insert、update、delete,结果由rowcount返回影响的行数,拿到执行结果。


    Cursor对象执行select,通过featchall()拿到list的结果集,每个元素都是一个tuple,对应一行记录


    SQL带有参数,需要把参数按照位置传递给execute()方法。


    安装mysql官方提供的python驱动

    pip install mysql-connection-python --allow-external mysql-connection-python


    操作mysql的步骤:

    import mysql.connector

    conn=mysql.connector.connect(user='root', password='password', database='test')

    cursor=conn.cursor()

    cursor.execute('create table user(id varchar(20) primary key, name varchar(20))')

    cursor.execute('insert into user(id, name) values(%s, %s)', ['1', 'Michael'])

    cursor.rowcount


    conn.commit()

    cursor.close()


    cursor = conn.cursor()

    cursor.execute('select * from user where id = %s', ['1'])

    values = cursor.fetchall()

    values


    cursor.close()

    conn.close()


    ORM技术 -- Object-Relational Mapping,把关系数据库的表接受映射到对象上。

    ORM框架 -- SQLAlchemy 

    SQLAlchemy的应用, 初始化DBSession

    from sqlalchemy import Column, String, create_engine
    from sqlalchemy.orm import sessionmaker
    from sqlalchemy.ext.declarative import declarative_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)

    一个表对应一个class。使用ORM添加记录,可以看成为添加一个User对象。

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

    添加数据的关键是获取session,然后把对象添加到session,最后提交并关闭。DBSession对象可视为当前数据库连接。

    使用ORM从数据库中查询数据:结果是一个user对象,而不是tuple。

    session = DBSession()
    
    user = session.query(User).filter(User.id=='5').one()
    
    print('type:', type(user)
    print('name:', user.name)
    session.close()

    多个表通过外键实现一对多,多对多的关联。ORM框架也可以实现一对多,多对多功能。

    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))
        
        user_id = Column(String(20), ForeignKey('user,id'))

    查询一个User对象时,该对象的books属性将返回一个包含若干个Book对象的list。


    ORM的作用就是把数据库表的一行记录与一个对象做相互转换, 使用ORM的前提是了解关系数据库的原理。
















关键字

上一篇: python中的注释

下一篇: python 遍历目录