在更改 MySQL 连接选项 (Python) 方面需要建议
Need advice in changing MySQL connection options (Python)
几天来我一直在尝试 运行 MySQL 中的一些代码来填充我已经创建的数据库。最初在 运行ning 时我收到错误 1251:
"Client does not support authentication protocol requested by server; consider upgrading MySQL client"。在我找到的 MySQL 文档和 Whosebug 答案中,我被引导将默认的 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)
我最近遇到错误:"non-keyword arg after keyword arg"。我曾尝试更改顺序但无济于事,这让我相信我可能没有正确更改默认设置。任何帮助或建议表示赞赏。谢谢。
问题似乎来自 {insecureAuth:true},它不是关键字参数。即 var=值。我不熟悉该库,但如果这是关键字,那么您应该可以将其设置为关键字或使用 **
传递
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})
我设法通过获取密码的 public 密钥并使用它代替普通密码来使代码部分正常工作。这代替了使用 insecureAuth 参数。
几天来我一直在尝试 运行 MySQL 中的一些代码来填充我已经创建的数据库。最初在 运行ning 时我收到错误 1251: "Client does not support authentication protocol requested by server; consider upgrading MySQL client"。在我找到的 MySQL 文档和 Whosebug 答案中,我被引导将默认的 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)
我最近遇到错误:"non-keyword arg after keyword arg"。我曾尝试更改顺序但无济于事,这让我相信我可能没有正确更改默认设置。任何帮助或建议表示赞赏。谢谢。
问题似乎来自 {insecureAuth:true},它不是关键字参数。即 var=值。我不熟悉该库,但如果这是关键字,那么您应该可以将其设置为关键字或使用 **
传递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})
我设法通过获取密码的 public 密钥并使用它代替普通密码来使代码部分正常工作。这代替了使用 insecureAuth 参数。