dyi*_*uck 2 python mysql-connector mysql-connector-python
import requests
import time
import csv
import ast
import sys
import mysql.connector
config = {
'user': 'root',
'password': 'password',
'host': '127.0.0.1',
'port': '3306',
'database': 'dbname',
'raise_on_warnings': True,}
cnx = mysql.connector.connect(config)
cursor = cnx.cursor()
Run Code Online (Sandbox Code Playgroud)
跑步给出:
Traceback (most recent call last):
File "/home/ubuntu/scrapers/xrp2.py", line 17, in <module>
cursor = cnx.cursor()
File "/usr/local/lib/python2.7/dist-packages/mysql/connector/connection.py", line 1383, in cursor
raise errors.OperationalError("MySQL Connection not available.")
OperationalError: MySQL Connection not available.
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这一问题?其他论坛有类似的错误并通过没有太多游标打开来修复问题,但这是第一次调用cursor(),所以我不确定为什么它不可用.我需要从Ubuntu终端关闭MySQL吗?
我的配置文件通过Sequel Pro的SSH正常连接.
已解决:将配置放入.connect(语句)而不是字典.
import requests
import mysql.connector
cnx = mysql.connector.connect(user ='root', password= 'p', host = '127.0.0.1',port='3306', database='coindb')
cursor = cnx.cursor()
Run Code Online (Sandbox Code Playgroud)
一个比你更优雅的解决方案:
import requests
import time
import csv
import ast
import sys
import mysql.connector
config = {
'user': 'root',
'password': 'password',
'host': '127.0.0.1',
'port': '3306',
'database': 'dbname',
'raise_on_warnings': True,}
cnx = mysql.connector.connect(**config)
cursor = cnx.cursor()
Run Code Online (Sandbox Code Playgroud)
如果您的连接已关闭,则会发生此错误.在Try-Except-Else块中,如果Except没有捕获到错误,则总是会执行Else.
因此,此代码立即关闭我的连接:
def mysql_get_mydb():
'''Takes no args, and returns a connection to MYDB via MYSQL.'''
creds = fixed_data.MYSQL_ENDPOINTS
try:
cnx = connector.connect(user='MYDB',
password='open_sesame',
host=creds['prod']['MYDB'][0],
port=3306,
database='MYDB')
except connector.Error as err:
if err.errno == connector.errorcode.ER_ACCESS_DENIED_ERROR:
print("Something is wrong with your user name or password")
elif err.errno == errorcode.ER_BAD_DV_ERROR:
print("Database does not exist")
else:
print(err)
# the else will happen if there was no error!
else:
cnx.close()
return cnx
Run Code Online (Sandbox Code Playgroud)
当我尝试做,z = mysql_get_mydb()并y = z.cursor()提出错误y = z.cursor().这是您列出的确切错误.您还可以通过打开连接,关闭它,然后尝试在其上定义游标来测试它.希望这个评论有助于某人.这里的修复是最后一个应该包含return cnx(并且cnx.close()应该删除)