django实现多数据库连接

方法一:

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.返回数据为字典

猜你喜欢

转载自blog.csdn.net/bugua3542/article/details/124853176
今日推荐