添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
相关文章推荐
逆袭的核桃  ·  极简 Node.js 入门 - 4.1 ...·  2 年前    · 
耍酷的莲藕  ·  筛选器属性 (ADO) | ...·  2 年前    · 
豁达的哑铃  ·  什么!ViewPager ...·  2 年前    · 
def __init__ (self,conn_dict): self.conn = pymysql.connect(host=conn_dict[ ' host ' ], port =conn_dict[ ' port ' ], user =conn_dict[ ' user ' ], passwd =conn_dict[ ' password ' ], db =conn_dict[ ' db ' ], charset =conn_dict[ ' charset ' ]) self.cursor = self.conn.cursor() def execute_query(self, sql_string): try : cursor = self.cursor cursor.execute(sql_string) list = cursor.fetchall() cursor.close() self.conn.close() return list except pymysql.Error as e: print ( " mysql execute error: " , e) raise def execute_noquery(self, sql_string): try : cursor = self.cursor cursor.execute(sql_string) self.conn.commit() self.cursor.close() self.conn.close() except pymysql.Error as e: print ( " mysql execute error: " , e) raise def main(): conn_dict = { ' host ' : ' 127.0.0.1 ' , ' port ' : 3306, ' user ' : ' ****** ' , ' password ' : ' ****** ' , ' db ' : ' test ' , ' charset ' : ' utf8 ' } conn = DBTool(conn_dict) sql_gettables = " select table_name from information_schema.`TABLES` WHERE TABLE_SCHEMA = 'databas_name'; " list = conn.execute_query(sql_gettables) # 文件目标路径,如果不存在,新建一个 mysql_file_path = ' D:\mysqlscript ' if not os.path.exists(mysql_file_path): os.mkdir(mysql_file_path) mysqldump_commad_dict = { ' dumpcommad ' : ' mysqldump --no-data ' , ' server ' : ' 127.0.0.1 ' , ' user ' : ' ****** ' , ' password ' : ' ****** ' , ' port ' : 3306, ' db ' : ' databse_name ' } if list: for row in list: print (row[0]) # 切换到新建的文件夹中 os.chdir(mysql_file_path) dbtable = row[0] # 文件名 exportfile = row[0] + ' .sql ' # mysqldump 命令 sqlfromat = " %s -h%s -u%s -p%s -P%s %s %s >%s " # 生成相应的sql语句 sql = (sqlfromat % (mysqldump_commad_dict[ ' dumpcommad ' ], mysqldump_commad_dict[ ' server ' ], mysqldump_commad_dict[ ' user ' ], mysqldump_commad_dict[ ' password ' ], mysqldump_commad_dict[ ' port ' ], mysqldump_commad_dict[ ' db ' ], dbtable, exportfile)) print (sql) result = os.system(sql) if result: print ( ' export ok ' ) else : print ( ' export fail ' ) if __name__ == ' __main__ ' : main()
create database test_database
charset utf8mb4 collate utf8mb4_bin;
use test_database;
create table table_a
    id int auto_increment not null,
    name varchar(100) unique,
    create_date datetime,
    primary key pk_id(id),
    index idx_create_date(create_date)
insert into table_a(name,create_date) values ('aaaaaa',now());
insert into table_a(name,create_date) values ('bbbbbb',now());
create table table_b
    id int auto_increment not null,
    name varchar(100) unique,
    create_date datetime,
    primary key pk_id(id),
    index idx_create_date(create_date)
insert into table_b(name,create_date) values ('aaaaaa',now());
insert into table_b(name,create_date) values ('bbbbbb',now());

执行的时候会提示一个警告,但是不影响最终的结果

mysqldump: [Warning] Using a password on the command line interface can be insecure.

导出建表语句会根据表的数据情况编号自增列,这是mysqldump的问题而不是导出的问题,如果有必要可以需求做相应的修改

for line in lines: print (line) if not (str(line).startswith( " -- " ) or str(line).startswith( " /* " ) ): if (line!= " \n " and str(line).startswith( " ) ENGINE " )): content = content + " \n " + " ) " else : content = content + line # 将提炼后的内容重新写入文件 print (content) fp = open(file, ' w ' ) fp.write(content) fp.close()