在更改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”。我试图将顺序切换为无效,这使我相信我可能没有正确更改默认设置。任何帮助或建议,不胜感激。谢谢你。


阿晨1998
浏览 144回答 2
2回答

手掌心

该问题似乎来自{insecureAuth:true},它不是关键字参数。即var = value。我不熟悉该库,但是如果这是一个关键字,那么您应该可以将其设置为关键字或通过**进行传递con = mdb.connect(host=db_host,user=db_user,passwd=db_pass,db=db_name,insecureAuth=True)或者con = mdb.connect(host=db_host,user=db_user,passwd=db_pass,db=db_name,**{insecureAuth:true})

料青山看我应如是

我设法通过获取密码的公钥并使用它代替普通密码来使代码部分起作用。这代替了使用insecureAuth参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python