首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >1045,使用两个python文件“拒绝访问”,一个工作,另一个“拒绝访问”?

问1045,使用两个python文件“拒绝访问”,一个工作,另一个“拒绝访问”?
EN

Stack Overflow用户
提问于 2014-05-22 23:37:15
回答 2查看 177关注 0票数 0

在两个文件中使用相同的mdb.connect行。使用debian 7,我的问题是给您提供更多的细节,因为我在问题中使用了很多代码,但是我没有什么可说的了。文件1很好用。

代码语言:javascript
复制
#!/usr/bin/python
# -*- coding: utf-8 -*-

import MySQLdb as mdb

con = mdb.connect('localhost', 'user', 'passw', 'pizzadb2', charset='utf8')

with con:

cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS pizzeria_table3")
cur.execute("CREATE TABLE pizzeria_table3(pizzeria_Id INT PRIMARY KEY AUTO_INCREMENT, \
            laden_name VARCHAR(50), vorwahl VARCHAR(15), telenr1 VARCHAR(20), \
            telenr2 VARCHAR(20), fax VARCHAR(20), strasse VARCHAR(40), hausnr VARCHAR(20), \
            plz VARCHAR(20), ort VARCHAR(40), oeffz1 VARCHAR(40), oeffz2 VARCHAR(40), \
            oeffz3 VARCHAR(40), oeffz4 VARCHAR(40), bestellwert1 VARCHAR(60), \
            bestellwert2 VARCHAR(60),bestellwert3 VARCHAR(60),rumpf_daten VARCHAR(60), \
            html_name VARCHAR(40), kartenname VARCHAR(30), linkname1 VARCHAR(40),\
            linkname2 VARCHAR(40), linkname3 VARCHAR(40), ordner VARCHAR(100), \
            spaltenanzahl INTEGER, logo_ordner VARCHAR(60), logo_name VARCHAR(60), \
            forum_link VARCHAR(100), link2 VARCHAR(40), link3 VARCHAR(40), banner VARCHAR(100), \
            UNIQUE(vorwahl, telenr1)) \
            default character set 'UTF8' COLLATE utf8_general_ci")

文件2‘datenimport4.py 4.py’出错了:

代码语言:javascript
复制
#!/usr/bin/python
#-*- coding: utf-8 -*-

import MySQLdb as mdb

con = mdb.connect('localhost', 'user', 'passw', 'pizzadb2', charset='utf8')


with con:

    cur = con.cursor()
    cur.execute("LOAD DATA INFILE 'Adressliste_forum1_v4.csv'\
            INTO TABLE pizzeria_table3 \
            FIELDS TERMINATED BY ',' \
            ENCLOSED BY '\"' \
            LINES TERMINATED BY '\\n'  \
            IGNORE 1 LINES \
            (laden_name, vorwahl, telenr1, strasse, hausnr, \
            ort, linkname1, linkname2, linkname3, forum_link, \
            link2, link3, banner) \
            ")

在这里,错误:

代码语言:javascript
复制
gutschy@kiste:~/pizza/pizza_daten$ python datenimport4.py
Traceback (most recent call last):
File "datenimport4.py", line 21, in <module>")
File "/usr/lib/python2.7/dist-packages/MySQLdb/cursors.py", line 174, in execute
self.errorhandler(self, exc, value)
File "/usr/lib/python2.7/dist-packages/MySQLdb/connections.py", line 36, in
defaulterrorhandler
raise errorclass, errorvalue
mysql_exceptions.OperationalError: (1045, "Access denied for user
'user'@'localhost' (using password: YES)")

我也查过MySQL拨款了。

将pizzadb2.*上的所有特权授予'user'@'localhost‘

论坛问我更多的代码,但我不能解释我的问题更多的spezifik

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-23 08:13:29

问题是您使用的用户没有足够的权限。CSV文件正在从MySQL服务器的数据目录中读取,您正在使用用户'gutschy‘执行脚本,但是MySQL服务器(可能)正在使用系统用户'mysql’运行。

但是,您可能希望以稍微不同的方式加载数据。您想要使用LOAD DATA LOCAL INFILE (注意‘本地’键盘)。这意味着文件将上载到MySQL服务器,然后导入。

下面是对您的代码的相关更改:

代码语言:javascript
复制
con = mdb.connect('localhost', 'user', 'passw', 'pizzadb2', charset='utf8'
                  local_infile=1)

..
with con:
    ..
    cur.execute("LOAD DATA LOCAL INFILE 'Adressliste_forum1_v4.csv'\
    ..

但是,要使其工作,您需要更改MySQL服务器配置。在Debian上,我喜欢添加一个额外的选项文件/etc/mysql/conf.d/server.cnf

代码语言:javascript
复制
[mysqld]
local-infile=1

重新启动MySQL服务器,并使用LOAD DATA LOCAL INFILE尝试脚本。权限应该可以。

票数 0
EN

Stack Overflow用户

发布于 2014-05-22 23:54:33

检查Adressliste_forum1_v5.csv及其目录上的访问权限。运行MySQL服务器的用户(不是在MySQL配置中授予特权的用户,而是运行mysql进程的UNIX用户--您可以使用ps aux | grep mysql检查这一点)

该文件至少必须具有用户的读取权限,并且它的父目录必须具有执行权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23818797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档