美文网首页
自我总结:连接数据库的集中常用方法

自我总结:连接数据库的集中常用方法

作者: ATM_shark | 来源:发表于2019-02-23 10:39 被阅读0次

    1、django自带ORM框架和django.db三方库

    自带ORM框架略

    ==============================================

    如果django的ORM框架在功能或者性能上达不到要求那么也可以通过原生的SQl查询来代替ORM框架的工作

    django框架中如何写原生sql代码

    1、连接数据库并获取游标
    from django.db import connections,connection
    con=connection.cursor()  #连接default数据库并获取游标
    con=connections['dafault'].cursor()
    con=connections['backend'].cursor()  #连接backend对应的数据库并获取游标
    2、编写sql代码
    con.excude('sql代码')  #sql代码要用引号包起来,同时如果存在字符串格式化,要用  百分号%s 占位符格式  而不用 f'{}' 格式
    3、获取数据库返回结果
    result=con.fetch()  #获取一个结果
    result=con.fetchall() #获取所有结果
    result=con.fetchmany() #获取多个结果
    
    from django.db import connections
    def data_bar(request):
        names, totals = [], []
        # connections['default'] <==> connection
        with connections['default'].cursor() as cursor:
            cursor.execute('select name, total from tb_agent t1 '
                           ' left outer join '
                           ' (select agentid, count(agentid) as total '
                           ' from tb_agent_estate group by agentid) t2 '
                           ' on t1.agentid = t2.agentid')
            for row in cursor.fetchall():
                names.append(row[0])
                totals.append(row[1])
        return JsonResponse({'x_data': names, 'y_data': totals})
    

    2、python中最著名的SQLAlchermy ORM框架

    参考地址:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0014021031294178f993c85204e4d1b81ab032070641ce5000

    第一步,导入SQLAlchemy,并初始化DBSession:
    # 导入:
    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))
    
    # 初始化数据库连接:
    engine = create_engine('mysql+mysqlconnector://root:password@localhost:3306/test')
    # 创建DBSession类型:
    DBSession = sessionmaker(bind=engine)
    

    create_engine()用来初始化数据库连接。
    SQLAlchemy用一个字符串表示连接信息:'数据库类型+数据库驱动名称://用户名密码@机器地址:端口号/数据库名'

    第二步:创建模型对象,并将其映射到数据库表中
    # 创建session对象:
    session = DBSession()
    # 创建新User对象:
    new_user = User(id='5', name='Bob')
    # 添加到session:
    session.add(new_user)
    # 提交即保存到数据库:
    session.commit()
    # 关闭session:
    session.close()
    

    我们还可对数据库的表进行增删改查

    3、pymysql、pymongodb、pysqlalchermy等三方库

    以pymysql为例

    import pymysql  #导入 pymysql
     
    #打开数据库连接
    db= pymysql.connect(host="localhost",user="root",
        password="123456",db="test",port=3307)
     
    # 使用cursor()方法获取操作游标
    cur = db.cursor()
     
    #1.查询操作
    # 编写sql 查询语句  user 对应我的表名
    sql = "select * from user"
    try:
        cur.execute(sql)    #执行sql语句
     
        results = cur.fetchall()    #获取查询的所有记录
        print("id","name","password")
        #遍历结果
        for row in results :
            id = row[0]
            name = row[1]
            password = row[2]
            print(id,name,password)
    except Exception as e:
        raise e
    finally:
        db.close()  #关闭连接
    注意:所有对数据库的写操作需要在cur.execute(sql) 之后加入提交事务命令——cur.commit()
    
    

    相关文章

      网友评论

          本文标题:自我总结:连接数据库的集中常用方法

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