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

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()

你可能感兴趣的:(自我总结:连接数据库的集中常用方法)