我正在运行Ubuntu 16.04,试图在python中连接到mysql:
state
但是我收到了一个错误:
export default class CustomObject extends React.Component {
getCustomObject = (elementType) => {
const customObject = this.props.customObjects[elementType];
console.log('customObject', customObject);
return customObject;
}
componentDidMount() {
const customObject = this.getCustomObject(this.props.element.elementType)
this.setState({ customObject });
}
render () {
return <div className={this.props.className} style={this.props.style}>
{this.state.customObject.name} // Gives TypeError: Cannot read property 'customObject' of null
</div>
}
}
我通过下载包here安装了mysql python模块。我试过 import mysql
username = 'root'
cnx = mysql.connector.connect(user=username, database='db')
cnx.close()
无济于事。有什么指针吗?
编辑:添加 File "pysql1.py", line 4, in <module>
cnx = mysql.connector.connect(user=username, database='db')
AttributeError: module 'mysql' has no attribute 'connector'
后,我收到了一个无关的权限错误,我现在已经解决了,所以这就是我需要的东西!
答案 0 :(得分:7)
解决方案是执行:
import mysql.connector # or from mysql import connector
因为模块connector
仅在您明确导入时才可用:
import mysql
print(dir(mysql))
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__path__', '__spec__']
import mysql.connector
print(dir(mysql))
>>> ['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__',
'__package__', '__path__', '__spec__', 'connector']
模块__init__
中的mysql
文件无法导入模块connector
。
mysql
|_______ __init__.py # no import at this level
|_______ connector
|________ __init__.py
如果connector
在__init__
内导入from . import connector
,则可以隐式执行此操作。
答案 1 :(得分:1)
import mysql.connector
之后我仍然遇到同样的错误并检查权限。我使用bash在MacOS上运行我的脚本。经过几个小时的搜索解决方案,在mysql论坛上发现了这篇文章:https://forums.mysql.com/read.php?50,584171,584729#msg-584729
海报提到您的python脚本无法命名为mysql.py
我的脚本名为types.py
,因此我将其重命名为setup-types.py
,这解决了我的问题。希望这可以在处理同样的错误时节省其他时间。
答案 2 :(得分:0)
再观察一次。在许多教程中,他们没有以相同的方式安装python连接器。那时,import语句可能是问题的原因。试试下面的导入语句。
import mysql.connector as mysql