python操作mysql之pymysql


  pymysql

config = {
    'host' : '192.168.70.12',
    'user' : 'zsbi',
    'password' : 'zsbi',
    'port' : 3306,
    'charset' : 'utf8'
    }

#db = pymysql.connect(host='localhost', user='root', password='******', port=3306) 
db = pymysql.connect(**config) 

cursor = db.cursor() #獲取游標
#select TABLE_NAME, TABLE_ROWS from information_schema.tables where table_type='BASE TABLE'
#https://www.cnblogs.com/reyinever/p/10869434.html
sql = 'select * from zsbi.aa10 limit 1,5'
cursor.execute(sql)# 執行SQL查詢,獲取數據
data = cursor.fetchall()# 獲取單條數據 fetchone, fetchmany
# 獲取列名列表
sql = 'SHOW FULL COLUMNS FROM zsbi.aa10'
cursor.execute(sql)#獲取列名
fea = [i[0] for i in cursor.fetchall()]
cursor.close()
db.close()# 關閉數據庫連接
#數據整理為dataframe格式
data = pd.DataFrame(data,columns=lis)#list轉化成dataframe格式


from sqlalchemy import create_engine

#填寫鏈接信息
engine = create_engine("mysql+pymysql://【此處填用戶名】:【此處填密碼】@【此處填host】:【此處填port】/【此處填數據庫的名稱】?charset=utf8") 
# 例如:engine = create_engine("mysql+pymysql://root:666666@localhost:3306/ajx?charset=utf8")
engine = create_engine("mysql+pymysql://{user}:{password}@{host}:{port}/ajx?charset=utf8".format(**config))

#開始寫入
data.to_sql(name = 'split',con = engine,if_exists = 'append',index = False,index_label = False)



DROP TABLE IF EXISTS `cdr`;
CREATE TABLE `cdr` (
    `direction` varchar(255) DEFAULT NULL,
    `caller` varchar(255) DEFAULT NULL,
    `callee` varchar(255) DEFAULT NULL,
    `context` varchar(255) DEFAULT NULL,
    `start_stamp` timestamp NULL DEFAULT NULL,
    `answer_stamp` varchar(255) DEFAULT NULL,
    `end_stamp` timestamp NULL DEFAULT NULL,
    `duration` int(255) DEFAULT NULL,
    `billsec` int(255) DEFAULT NULL,
    `hangup_cause` varchar(255) DEFAULT NULL,
    `uuid` varchar(255) DEFAULT NULL,
    `bleg_uuid` varchar(255) DEFAULT NULL,
    `accountcode` varchar(255) DEFAULT NULL,
    `read_codec` varchar(255) DEFAULT NULL,
    `write_codec` varchar(255) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

  

  load data infile 

load data infile 'd:/test.csv' 
IGNORE
into table 將要導入的數據庫表名 
fields 
    terminated by '\t'  -- 在字段之間寫入制表符
    optionally enclosed by '"' 
    escaped by '\\' 
lines 
    terminated by '\r\n';

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name.txt'
    [REPLACE | IGNORE]  -- 針對重復數據,replace先刪后寫=更新數據,ignore忽略重復數據
    INTO TABLE tbl_name
    [FIELDS
        [TERMINATED BY '\t'] -- 在字段之間寫入制表符
        [[OPTIONALLY] ENCLOSED BY '']  --不把字段包含在任何引號字符中。如果是ENCLOSED BY "'" :使用單引號把各個字段括起來;
        [ESCAPED BY '\\' ] --當字段值中出現制表符、新行或‘\’時,使用‘\’進行轉義。
    ]
    [LINES
        [STARTING BY '\n'] -- 在行的末端寫入新行。
        [TERMINATED BY ''] --不會跳過任何行前綴。
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...)]

  

  select into outfile

#/etc/mysql/mysql.conf.d/mysqld.cnf
select * 
from tempdb.t 
into outfile ‘/home/mysql/t.txt’; 

'1100'$'監獄管理局'$\N$1$\N$'監獄管理局'$1$1$'1100'$'1'$\N$'2011-01-12 00:00:00'$
'1101'$'第一監獄'$'1100'$2$\N$'第一監獄'$1$2$'1101'$'1'$\N$'2011-01-12 00:00:00'$
'1102'$'第二監獄'$'1100'$2$\N$'第二監獄'$1$3$'1102'$'1'$\N$'2011-01-12 00:00:00'$


SELECT * INTO  outfile 'e:/tmp/t_aty_corp.sql'  
FIELDS 
    TERMINATED BY '$' 
OPTIONALLY 
    ENCLOSED BY "'" 
    ESCAPED BY '\\' 
LINES 
    STARTING BY '\r\n' 
    TERMINATED BY '' 
FROM db_aty.t_aty_corp;


^1100^$^監獄管理局^$\N$1$\N$^監獄管理局^$1$1$^1100^$^1^$\N$^2011-01-12 00:00:00^$
^1101^$^第一監獄^$^1100^$2$\N$^第一監獄^$1$2$^1101^$^1^$\N$^2011-01-12 00:00:00^$
^1102^$^第二監獄^$^1100^$2$\N$^第二監獄^$1$3$^1102^$^1^$\N$^2011-01-12 00:00:00^$


SELECT * INTO  outfile 'e:/tmp/t_aty_corp.sql'  
FIELDS TERMINATED BY '$' 
OPTIONALLY ENCLOSED BY "^" 
ESCAPED BY '\\' 
LINES STARTING BY '\r\n' 
TERMINATED BY ''   
FROM db_aty.t_aty_corp;

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM