【发布时间】:2020-11-07 12:20:00
【问题描述】:
我想在 pythonanywhere 上将 mysql 数据库导出为 CSV。我打开了一个 mysql 控制台,甚至尝试了“select * from”。它向我显示了正确的输出。但是当我执行“select * from into outfile 'db.csv';”时它显示:“用户 ''@'%' 的访问被拒绝(使用密码:YES)”。
【问题讨论】:
标签: mysql flask pythonanywhere
我想在 pythonanywhere 上将 mysql 数据库导出为 CSV。我打开了一个 mysql 控制台,甚至尝试了“select * from”。它向我显示了正确的输出。但是当我执行“select * from into outfile 'db.csv';”时它显示:“用户 ''@'%' 的访问被拒绝(使用密码:YES)”。
【问题讨论】:
标签: mysql flask pythonanywhere
SELECT ... INTO OUTFILE 语句旨在启用转储 表到服务器主机上的文本文件。创建结果文件 在其他一些主机上,SELECT ... INTO OUTFILE 通常不适合 因为没有办法写相对于文件的路径 服务器主机文件系统,除非远程文件的位置 可以使用服务器主机上的网络映射路径访问主机 文件系统。
或者,如果 MySQL 客户端软件安装在远程 主机,您可以使用客户端命令,例如 mysql -e "SELECT ..." > file_name 在该主机上生成文件。
所以,换一种说法——你正在连接到运行在与运行 MySQL 控制台的计算机不同的计算机上的 MySQL 服务器,然后运行一个尝试在其上写入文件的命令另一台计算机,您没有权限写入文件(如果您这样做,将无法访问它)。
相反,您应该启动一个 Bash 控制台,然后运行如下命令:
mysql -u yourusername -p -h yourdatabasehost -e "select * from yourtable" 'yourdatabasename' > db.csv
...适当地替换 yourusername、yourdatabasehost、yourtable 和 yourdatabasename。 yourdatabasename 周围的单引号很重要,因为在 PythonAnywhere 上,数据库名称类似于 yourusername$something,如果没有引用美元符号,shell 会将其解释为环境变量。
【讨论】: