• 转 Python 访问数据库(SQLite、MySQL、SQLAlchemy)



    https://www.jianshu.com/p/25fde93c2fb9


    ##section 1
    表是数据库中存放关系数据的集合,一个数据库里面通常都包含多个表,比如学生的表,班级的表,学校的表,等等。表和表之间通过外键关联。

    # 导入SQLite驱动:
    >>> import sqlite3
    # 连接到SQLite数据库
    # 数据库文件是test.db
    # 如果文件不存在,会自动在当前目录创建:
    >>> conn = sqlite3.connect('myreader.db')
    # 创建一个Cursor:
    >>> cursor = conn.cursor()
    # 执行一条SQL语句,创建user表:
    >>> cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
    <sqlite3.Cursor object at 0x10f8aa260>
    # 继续执行一条SQL语句,插入一条记录:
    >>> cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
    <sqlite3.Cursor object at 0x10f8aa260>
    # 通过rowcount获得插入的行数:
    >>> cursor.rowcount
    1
    # 关闭Cursor:
    >>> cursor.close()
    # 提交事务:
    >>> conn.commit()
    # 关闭Connection:
    >>> conn.close()

    ###section 2 myreader.db 是一个文件
    查询记录
    >>> import sqlite3
    >>> conn = sqlite3.connect('test.db')
    conn = sqlite3.connect('myreader.db')
    >>> cursor = conn.cursor()
    # 执行查询语句:
    >>> cursor.execute('select * from user where id=?', ('1',))
    cursor.execute('select * from spider_data')
    <sqlite3.Cursor object at 0x10f8aa340>
    # 获得查询结果集:
    >>> values = cursor.fetchall()
    >>> values
    [('1', 'Michael')]
    >>> cursor.close()
    >>> conn.close()

    ##sample section 3 

    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-

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

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

    # 定义User对象:
    class User(Base):
    # 表的名字:
    __tablename__ = 'user'

    # 表的结构:
    id = Column(String(20), primary_key=True)
    name = Column(String(20))

    # 初始化数据库连接: password 为自己数据库密码
    # '数据库类型+数据库驱动名称://用户名:口令@机器地址:端口号/数据库名'
    #engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')
    engine = create_engine('sqlite:///myreader.db')
    # 创建DBSession类型:
    DBSession = sessionmaker(bind=engine)


    # 以上代码完成SQLAlchemy的初始化和具体每个表的class定义
    # 如果有多个表,就继续定义其他class,例如School

    # class School(Base):
    # __tablename__ = 'school'
    # id = ...
    # name = ...

    # 由于有了ORM,我们向数据库表中添加一行记录,可以视为添加一个User对象
    # DBSession对象可视为当前数据库连接
    # 创建session对象:
    session = DBSession()
    # 创建新User对象:
    new_user = User(id='5', name='Bob')
    # 添加到session:
    session.add(new_user)
    # 提交即保存到数据库:
    session.commit()
    # 关闭session:
    session.close()



    # 有了ORM,查询出来的可以不再是tuple,而是User对象
    # 创建Session:
    session = DBSession()
    # 创建Query查询,filter是where条件,最后调用one()返回唯一行,如果调用all()则返回所有行:
    user = session.query(User).filter(User.id=='5').one()
    # 打印类型和对象的name属性:
    print('type:', type(user))
    print('name:', user.name)
    # 关闭Session:
    session.close()
  • 相关阅读:
    阿里MaxCompute(原ODPS)如何修改列字段数据类型
    解决SQL语句在Dapper执行超时比Query慢的问题
    IIS部署FLASK网站
    如何在vscode中调试python scrapy爬虫
    [转]阿拉伯数字转一二三和壹贰叁
    第三册复习
    不知道的口语
    跟小丸子学基础口语21-25
    跟小丸子学基础口语16-20
    跟小丸子学基础口语11-15
  • 原文地址:https://www.cnblogs.com/feiyun8616/p/16360196.html
Copyright © 2020-2023  润新知