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