将mysql-python函数导入另一个目录(ModuleNotFoundError)



SOS。我正在将我的SQLite数据库迁移到MySQL,我想使用/db/connect.py中的一个函数与我在/app/app.py的应用程序共享我的MySQL连接。我使用一个临时文件来测试/app/test.py上的连接,其中包含函数import。来自/db/connect.py的连接自身成功运行。然而,即使遵循了其他指南,我在/db/connect.py中的函数也没有正确导入。即使在/db/目录中添加了一个空的__init__.py文件之后。

我尝试过的

以下是我在这里、这里、这里和这里尝试过的小样本(以及堆栈溢出中关于该主题的所有其他问题,例如,这里、这里,这里等(。

/db/test.py(带函数导入的临时文件(

导入/db/connect.py>sql_db_connection((。

from db.connect import sql_db_connection
import db
def get_all():
conn = sql_db_connection()
cursor = conn.cursor()
cursor.execute("select * from posts")
result = cursor.fetchall()
for x in result:
print(x)
错误(运行test.py时出错(
Traceback (most recent call last):
File "/Users/<uname>/<my-long-app-name>/app/test.py", line 1, in <module>
from db.connect import sql_db_connection
ModuleNotFoundError: No module named 'db'
/db/connect.py(用于mysql连接的函数(
import sshtunnel
import MySQLdb
import os
from dotenv import load_dotenv
# Load all env vars
load_dotenv()
def sql_db_connection():
sshtunnel.SSH_TIMEOUT = 5.0
sshtunnel.TUNNEL_TIMEOUT = 5.0
with sshtunnel.SSHTunnelForwarder(
('ssh.pythonanywhere.com'),
ssh_username=os.getenv("REMOTE_DB_SSH_USERNAME"), ssh_password=os.getenv("REMOTE_SSH_PASSWORD"),
remote_bind_address=(
os.getenv("REMOTE_BIND_ADDRESS"), 3306)
) as tunnel:
conn = MySQLdb.connect(
user=os.getenv("REMOTE_DB_SSH_USERNAME"),
passwd=os.getenv("REMOTE_DB_PASSWORD"),
host='0.0.0.0', port=tunnel.local_bind_port,
db=os.getenv("REMOTE_DB_NAME"),
)
print('Connected!')

return conn
sql_db_connection()
.
├── Dockerfile
├── README.md
├── __pycache__
│   ├── app.cpython-310.pyc
│   ├── app.cpython-39.pyc
│   ├── config.cpython-39.pyc
│   ├── wsgi.cpython-38.pyc
│   └── wsgi.cpython-39.pyc
├── app
│   ├── Dockerfile
│   ├── __init__.py
│   ├── __pycache__
│   ├── app.py
│   ├── config.py
│   ├── public
│   ├── requirements.txt
│   ├── templates
│   ├── test.py
│   └── wsgi.py
├── db
│   ├── Dockerfile
│   ├── README.md
│   ├── __init__.py
│   ├── __pycache__
│   ├── connect.py
│   ├── database.db
│   ├── dump.sql
│   ├── init_db.py
│   ├── mysql_dump.sql
│   ├── schema.sql
│   └── schema_mysql.sql
├── docker-compose.yml
├── features.md
├── images
├── requirements.txt
├── setup.py
├── venv
│   ├── bin
│   ├── include
│   ├── lib
│   ├── man
│   └── pyvenv.cfg
└── wsgi.py

将这两行添加为test.py中的前两行

import sys
sys.path.append('/Users/<uname>/<my-long-app-name>')

相关内容

  • 没有找到相关文章

最新更新