我被困了几天试图在MySQL中运行一些代码来填充我已经创建的数据库。最初在运行时出现错误1251:“客户端不支持服务器请求的身份验证协议;请考虑升级MySQL客户端”。在我找到的MySQL文档和stackoverflow答案中,我被引导将默认的insecureAuth设置从默认的false更改为true。这是我当前正在使用的代码...import datetimeimport MySQLdb as mdbfrom math import ceildef obtain_btc(): now = datetime.datetime.utcnow() symbols = ['BTC', 'Crypto', 'Bitcoin', 'No Sector', 'USD', now, now] return symbolsdef 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”。我试图将顺序切换为无效,这使我相信我可能没有正确更改默认设置。任何帮助或建议,不胜感激。谢谢你。
2 回答

手掌心
TA贡献1942条经验 获得超3个赞
该问题似乎来自{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})
添加回答
举报
0/150
提交
取消