方法一:
1.setting文件配置多个数据库
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': "b***ya-m.dbsit.sfcloud.local",
'NAME': "apitest",
'USER': "**",
'PASSWORD': "****",
'PORT': "3306",
}
},
'db01':{
'ENGINE': 'django.db.backends.mysql',
'HOST': "****m.dbsit.sfcloud.local",
'NAME': "apitest2",
'USER': "**",
'PASSWORD': "****",
'PORT': "3306",
}
}
2.创建django_sql.py文件
from django.db import connections
def django_sql(sql, database_name=None, data=None):
if database_name:
connection = connections[database_name]
else:
connection = connections['default']
cursor = connection.cursor()
try:
if data:
cursor.execute(sql, data)
else:
cursor.execute(sql)
raws = cursor.fetchall()
except:
connection.rollback()
raws = None
connection.commit()
cursor.close()
return raws
3.view.py文件写SQL语句, 传数据库名
def bdus_emp(request):
emp_num='012'
sql = ('select * from emp_data where emp_num="%s"'%emp_num)
raws = django_sql(sql, database_name='db01')
print(raws)
return render(request, "bdus/emp.html",{"emp_list": raws})
4.连接数据库成功, 但是返回的数据类型是元组类型
方法二: 返回字典类型
1.创建pymysql_sql文件
from django.db import connections
import MySQLdb
def pymysql_sql(sql, database_name=None, data=None):
if database_name:
connection = connections[database_name]
cursor = MySQLdb.connect(host='****t.sfcloud.local', port=3306, user='b*s', passwd='***',
db='***',
cursorclass=MySQLdb.cursors.DictCursor)
cursor = cursor.cursor(MySQLdb.cursors.DictCursor)
else:
connection = connections['default']
cursor = connection.cursor()
try:
if data:
cursor.execute(sql, data)
else:
cursor.execute(sql)
raws = cursor.fetchall()
except:
connection.rollback()
raws = None
connection.commit()
cursor.close()
return raws
2.view.py文件写SQL语句, 传数据库名
def bdus_emp(request):
emp_num='012'
sql = ('select * from emp_data where emp_num="%s"'%emp_num)
raws=pymysql_sql(sql,database_name='db01')
print(raws)
return render(request, "bd/emp.html",{"emp_list": raws})
3.返回数据为字典