Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menyambung ke pangkalan data Mysql dari jauh menggunakan Python berdasarkan ssh

Bagaimana untuk menyambung ke pangkalan data Mysql dari jauh menggunakan Python berdasarkan ssh

WBOY
Lepaskan: 2023-05-27 16:07:13
ke hadapan
1356 orang telah melayarinya

Latar Belakang

Jika anda perlu mengakses pangkalan data Mysql pelayan jauh, tetapi untuk tempoh keselamatan pangkalan data Mysql, langkah keselamatan ditetapkan untuk hanya membenarkan sambungan tempatan (iaitu, anda perlu log masuk ke pelayan untuk menggunakannya), yang lain Sambungan jauh tidak boleh diakses secara langsung, dan port yang sepadan telah diubah suai, jadi anda perlu menyambung ke pangkalan data berdasarkan ssh. Kaedah menyambung ke pangkalan data adalah serupa dengan sambungan antara muka dalam Navicat melalui SSH.

Bagaimana untuk menyambung ke pangkalan data Mysql dari jauh menggunakan Python berdasarkan ssh

Navicat

Bagaimana untuk menyambung ke pangkalan data Mysql dari jauh menggunakan Python berdasarkan ssh

Sambung ke pangkalan data

Pasang pustaka sokongan

  • Jika anda ingin menyambung ke Mysql, anda perlu memasang pymysql

pip install pymysql
Salin selepas log masuk
  • Pasang sshtunnel perpustakaan berasaskan ssh

pip install sshtunnel    #当前最新 0.3.1版
Salin selepas log masuk

Adalah disyorkan untuk memasang pustaka sshtunnel terkini. Pustaka versi lama mempunyai beberapa pepijat

Sambung ke Mysql

Sambung ke Mysql berdasarkan ssh dokumentasi sshtunnel, yang mempunyai beberapa kes

with SSHTunnelForwarder(
        ('192.168.1.1', 2222),
        ssh_password='123456',
        ssh_username='root',
        remote_bind_address=('127.0.0.1', 3306)) as server:
    print('SSH连接成功')
    conn = pymysql.connect(host='127.0.0.1',
                           port=server.local_bind_port,
                           user='root',
                           database='data',
                           charset='utf8')
    print('mysql数据库连接成功')
    cursor = conn.cursor()
    ...  #获取数据操作,此处省略
    cursor.close()
    conn.close()
Salin selepas log masuk

Mentakrifkan Sendiri fungsi pertanyaan

boleh merangkum sambungan di atas menjadi fungsi untuk memudahkan penggunaan di tempat lain

def mysql_ssh(sql,args=None):
    with SSHTunnelForwarder(
            ('192.168.1.1', 2222),
            ssh_password='123456',
            ssh_username='root',
            remote_bind_address=('127.0.0.1', 3306)) as server:
        print('SSH连接成功')
        conn = pymysql.connect(host='127.0.0.1',
                               port=server.local_bind_port,
                               user='root',
                               database='data',
                               charset='utf8')
        print('mysql数据库连接成功')
        cursor = conn.cursor()
        print('游标获取成功')
        try:
            print(f'执行查询语句:{sql}  参数:{args}')
            cursor.execute(sql,args)
            print('数据查询成功')
            conn.commit()
            print('事务提交成功')
            datas = cursor.fetchall()
            success = True
        except:
            print('数据查询失败')
            datas = None
            success = False
        print('正在关闭数据库连接')
        cursor.close()
        conn.close()
    return datas, success
Salin selepas log masuk

Nota:

  • Apabila menggunakan pangkalan data, conn.commit(), cursor.close() dan conn.close() mesti digunakan dengan cara yang standard untuk mengelakkan pepijat yang tidak diperlukan 🎜>

  • Adalah disyorkan untuk menggunakan kaedah ini apabila menghantar parameter
  • , mengelakkan risiko suntikan sql

    cursor.execute(sql,args)

    .

Atas ialah kandungan terperinci Bagaimana untuk menyambung ke pangkalan data Mysql dari jauh menggunakan Python berdasarkan ssh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan