我有一个xx.db文件,我用密钥访问,将密钥打印到屏幕上进行检查。有很多级别的键,我在这里显示顶级。
for filename in filenames:
with contextlib.closing(shelve.open(filename, flag = "w")) as data:
prdata = data['all'].keys()
打印prdata 我在Python中创建了一个这样的表:
tbl= """CREATE TABLE IF NOT EXISTS table2 (
`class` varchar(30) default NULL,
`name` varchar(120) default NULL,
)"""
cursor.execute(tbl)
我想将第一个数据集的输出(来自.db文件)加载到创建的MySQLdb表中。我该怎么办? 我是否首先需要从db文件创建文本文件? 我已经读过LOAD DATA INFILE是一种从文本文件将数据加载到数据库的快速方法。由于数据库中有很多数据,如果我可以先跳过制作文本文件会更快。
编辑: 试过这个,提供语法错误“你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在'prdata INTO TABLE table2 \ n \ t FIELDS TERMINATED BY''附近使用正确的语法。 我没有正确理解语法文档以及如何将它包含在Python中。
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
[REPLACE | IGNORE]
INTO TABLE tbl_name
[CHARACTER SET charset_name]
[{FIELDS | COLUMNS}
[TERMINATED BY 'string']
[[OPTIONALLY] ENCLOSED BY 'char']
[ESCAPED BY 'char']
]
表示文件名中的文件名: 使用contextlib.closing(shelve.open(filename,flag =“w”))作为数据:
prdata = data ['all']。keys()cursor.execute(“”“LOAD DATA INFILE prdata INTO TABLE table2 字段被''终止 “”“)
更新:决定使用INSERT INTO table2(类,名称)VALUE(%s,%s) 工作正常
答案 0 :(得分:1)
创建连接时,不要忘记添加local_infile参数
connection = MySQLdb.connect(host="localhost", user="appuser", passwd="",
db="test", local_infile = 1)
否则会出现此错误:
ERROR 1148 (42000): The used command is not allowed with this MySQL version
答案 1 :(得分:0)
你也可以从python加载:
cursor.executemany(
"""INSERT INTO table2 (class, name)
VALUES (%s, %s)""",
[
("class1", "name1" ),
("class2", "name2" ),
("class3", "name3" )
] )