我想使用python MySQLdb访问带有--local-infile标志的远程MySQL服务器,以便能够从本地文件加载数据。 (如本问题Importing CSV to MySQL table returns an error #1148中所述)
我用
db = MySQLdb.connect(host="127.0.0.1", port=3307, user="someuser", passwd="password", db="sql_db")
创建数据库连接。如何使用MySQLdb模拟mysql -u username -p dbname --local-infile
答案 0 :(得分:0)
您可以将数据库配置放入本地文件,然后在使用时读取它。
的config.ini
[MySQL]
host=192.168.20.28
user=root
password=123456
db_name=ovp_global
charset=utf8
py代码:
import MySQLdb
import ConfigParser
config = ConfigParser.ConfigParser()
config.readfp(open("config.ini", "r"))
def get_connection():
host = config.get('MySQL', 'host')
user = config.get('MySQL', 'user')
passwd = config.get('MySQL', 'password')
db = config.get('MySQL', 'db_name')
charset = config.get('MySQL', 'charset')
return MySQLdb.connect(host=host, user=user, passwd=passwd, db=db, charset=charset)
答案 1 :(得分:0)
我知道最初的问题已经很晚了,但是如果有人来这里寻找相同的问题,您可以这样做:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
allow_local_infile=True,
)
在这里您可以检查文档中是否有其他标志:https://dev.mysql.com/doc/connector-python/en/connector-python-connectargs.html
如果要将其设置为数据库配置而不是在连接中,则可以这样做:
mydb = mysql.connector.connect(
host="localhost",
user="root",
passwd="",
)
mycursor = mydb.cursor()
try:
command = "SET GLOBAL local_infile = 'ON';"
mycursor.execute(command)
except mysql.connector.errors.DatabaseError:
pass