首页 > 解决方案 > 需要更改 MySQL 连接选项的建议 (Python)

问题描述

几天来,我一直试图在 MySQL 中运行一些代码来填充我已经创建的数据库。最初在运行时出现错误 1251:“客户端不支持服务器请求的身份验证协议;考虑升级 MySQL 客户端”。在我找到的 MySQL 文档和 stackoverflow 答案中,我被引导将默认的 insecureAuth 设置从默认的 false 更改为 true。这是我目前正在使用的代码...

import datetime
import MySQLdb as mdb
from math import ceil

def obtain_btc():
    now = datetime.datetime.utcnow()
    symbols = ['BTC', 'Crypto', 'Bitcoin', 'No Sector', 'USD', now, now]
    return symbols

def insert_btc_symbols(symbols, insecureAuth):
    db_host = 'localhost'
    db_user = 'natrob'
    db_pass = '**********'
    db_name = 'securities_master'
    con = mdb.connect(host=db_host,user=db_user,passwd=db_pass,db=db_name,{insecureAuth:true})
    column_str = "ticker, instrument, name, sector, currency, created_date, last_updated_date"
    insert_str = (("%s, ")*7)[:2]
    final_str = ("INSERT INTO symbols (%s) VALUES (%s)" % (column_str,insert_str))
    print (final_str,len(symbols))

    with con:
        cur = con.cursor()
        for i in range(0,int(ceil(len(symbols)/100.0))):
            cur.executemany(final_str,symbols[i*100:(i+1)*100-1])

if __name__ == "__main__":
    symbols = obtain_btc()
    insert_btc_symbols(symbols)

我最近收到错误:“关键字 arg 之后的非关键字 arg”。我试图切换顺序无济于事,这让我相信我可能没有正确更改默认设置。任何帮助或建议表示赞赏。谢谢你。

标签: pythonmysqldatabaseconnectioninsecure-connection

解决方案


我设法通过获取密码的公钥并使用它代替普通密码来使代码部分正常工作。这代替了使用 insecureAuth 参数。


推荐阅读