未找到名为游标的模块
No module found named cursors
我刚刚在 VPS 上安装了 PyMySQL,安装似乎没有任何问题。
为确保一切正常,我尝试执行在 their documentation.
中找到的以下脚本
Python 2.7.5
和 Python 3.6.5
Server version: 10.1.34-MariaDB MariaDB Server
import pymysql.cursors
# Connect to datebase
con = pymysql.connect(host='localhost',
user='dbuser',
password='dbpass',
db='dbname',
charset='utf8mb4',
cursorclass=pymysql.cursor.DictCursor)
try:
with con.cursor() as cursor:
# Create new record
sql = "INSERT INTO `test` (`idx`, `title`, `description`, `category`) VALUES (%s, %s, %s, %s)"
cursor.execute(sql, (1, 'Fake Title', 'Fake description about a fake post.', 'WELLNESS'))
with con.cursor() as cursor:
# Read a single record
sql = "SELECT `idx`, `title` FROM `test` WHERE `idx`=%s"
cursor.execute(sql, ('1'))
result = cursor.fetchone()
finally:
with open('dbText.txt', 'w') as f:
f.write('%s'.format(result))
con.close()
但是,我收到了 ImportError
,上面写着 No module found named cursors
。
[root@host public_html]# python pymysql.py
Traceback (most recent call last):
File "pymysql.py", line 1, in <module>
import pymysql.cursors
File "/home/bldsprt/public_html/pymysql.py", line 1, in <module>
import pymysql.cursors
ImportError: No module named cursors
[root@host public_html]# python3.6 pymysql.py
Traceback (most recent call last):
File "pymysql.py", line 1, in <module>
import pymysql.cursors
File "/home/bldsprt/public_html/pymysql.py", line 1, in <module>
import pymysql.cursors
ModuleNotFoundError: No module named 'pymysql.cursors'; 'pymysql' is not a package
当我尝试重新安装时,它表明 pymysql
已经安装。
[root@host public_html]# pip install pymysql
Requirement already satisfied: pymysql in /usr/local/lib/python3.6/site-packages (0.9.0)
Requirement already satisfied: cryptography in /usr/local/lib/python3.6/site-packages (from pymysql) (2.2.2)
Requirement already satisfied: idna>=2.1 in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (2.7)
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (1.11.0)
Requirement already satisfied: cffi>=1.7; platform_python_implementation != "PyPy" in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (1.11.5)
Requirement already satisfied: asn1crypto>=0.21.0 in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (0.24.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi>=1.7; platform_python_implementation != "PyPy"->cryptography->pymysql) (2.18)
我需要单独安装cursors
模块吗?
任何帮助都是巨大的!
堆栈跟踪的这一部分揭示了问题:
File "/home/bldsprt/public_html/pymysql.py", line 1, in <module>
import pymysql.cursors
ImportError: No module named cursors
您已将用于测试的文件命名为 "pymysql.py" -- 因此,Python 尝试从同一个文件中获取游标模块。如果将文件重命名为其他名称,它应该能够加载正确的库文件,只要通过 pip2/pip2.7 安装了 pymysql(似乎系统上的 pip 默认为 Python 3 安装).
此外,从包和文档本身来看,我认为当您初始化 MySQL 连接对象 (con
) 时,它应该使用 pymysql.cursors.DictCursor
(游标,不是游标)对于游标类。
我刚刚在 VPS 上安装了 PyMySQL,安装似乎没有任何问题。
为确保一切正常,我尝试执行在 their documentation.
中找到的以下脚本Python 2.7.5
和 Python 3.6.5
Server version: 10.1.34-MariaDB MariaDB Server
import pymysql.cursors
# Connect to datebase
con = pymysql.connect(host='localhost',
user='dbuser',
password='dbpass',
db='dbname',
charset='utf8mb4',
cursorclass=pymysql.cursor.DictCursor)
try:
with con.cursor() as cursor:
# Create new record
sql = "INSERT INTO `test` (`idx`, `title`, `description`, `category`) VALUES (%s, %s, %s, %s)"
cursor.execute(sql, (1, 'Fake Title', 'Fake description about a fake post.', 'WELLNESS'))
with con.cursor() as cursor:
# Read a single record
sql = "SELECT `idx`, `title` FROM `test` WHERE `idx`=%s"
cursor.execute(sql, ('1'))
result = cursor.fetchone()
finally:
with open('dbText.txt', 'w') as f:
f.write('%s'.format(result))
con.close()
但是,我收到了 ImportError
,上面写着 No module found named cursors
。
[root@host public_html]# python pymysql.py
Traceback (most recent call last):
File "pymysql.py", line 1, in <module>
import pymysql.cursors
File "/home/bldsprt/public_html/pymysql.py", line 1, in <module>
import pymysql.cursors
ImportError: No module named cursors
[root@host public_html]# python3.6 pymysql.py
Traceback (most recent call last):
File "pymysql.py", line 1, in <module>
import pymysql.cursors
File "/home/bldsprt/public_html/pymysql.py", line 1, in <module>
import pymysql.cursors
ModuleNotFoundError: No module named 'pymysql.cursors'; 'pymysql' is not a package
当我尝试重新安装时,它表明 pymysql
已经安装。
[root@host public_html]# pip install pymysql
Requirement already satisfied: pymysql in /usr/local/lib/python3.6/site-packages (0.9.0)
Requirement already satisfied: cryptography in /usr/local/lib/python3.6/site-packages (from pymysql) (2.2.2)
Requirement already satisfied: idna>=2.1 in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (2.7)
Requirement already satisfied: six>=1.4.1 in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (1.11.0)
Requirement already satisfied: cffi>=1.7; platform_python_implementation != "PyPy" in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (1.11.5)
Requirement already satisfied: asn1crypto>=0.21.0 in /usr/local/lib/python3.6/site-packages (from cryptography->pymysql) (0.24.0)
Requirement already satisfied: pycparser in /usr/local/lib/python3.6/site-packages (from cffi>=1.7; platform_python_implementation != "PyPy"->cryptography->pymysql) (2.18)
我需要单独安装cursors
模块吗?
任何帮助都是巨大的!
堆栈跟踪的这一部分揭示了问题:
File "/home/bldsprt/public_html/pymysql.py", line 1, in <module>
import pymysql.cursors
ImportError: No module named cursors
您已将用于测试的文件命名为 "pymysql.py" -- 因此,Python 尝试从同一个文件中获取游标模块。如果将文件重命名为其他名称,它应该能够加载正确的库文件,只要通过 pip2/pip2.7 安装了 pymysql(似乎系统上的 pip 默认为 Python 3 安装).
此外,从包和文档本身来看,我认为当您初始化 MySQL 连接对象 (con
) 时,它应该使用 pymysql.cursors.DictCursor
(游标,不是游标)对于游标类。