在两个文件中使用相同的mdb.connect行。使用debian 7和我的问题现在是给你更多的细节,因为我在我的问题中使用了很多代码,但我不能再说了。 文件1工作正常。
#!/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'出错了:
#!/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) \
")
这里的错误:
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
上授予所有特权。*用户&#39; @&#39; localhost&#39;
论坛问了我更多的代码,但我不知道如何解释我的问题更多spezifik
答案 0 :(得分:0)
检查Adressliste_forum1_v5.csv及其目录的访问权限。运行MySQL服务器的用户(不是MySQL配置中授予privs的用户,运行mysql进程的UNIX用户 - 您可以使用ps aux | grep mysql
进行检查)
该文件必须至少具有该用户的读权限,并且其父目录必须具有执行权限。
答案 1 :(得分:0)
问题是您使用的用户没有足够的权限。正在从MySQL服务器的数据目录中读取CSV文件,并且您正在使用用户'gutschy'执行脚本,但MySQL服务器(可能)正在使用系统用户'mysql'运行。
但是,您可能希望以不同方式加载数据。您想使用LOAD DATA LOCAL INFILE
(请注意'LOCAL'键盘)。这意味着该文件将上传到MySQL服务器,然后导入。
以下是对您的代码的相关更改:
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
:
[mysqld]
local-infile=1
重新启动MySQL服务器,并使用LOAD DATA LOCAL INFILE
尝试您的脚本。权限应该没问题。