pandas函數參考:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html#pandas.read_csv
sql語句參考:https://www.runoob.com/sql/sql-in.html
import pandas as pd
from sqlalchemy import create_engine
select_env = 'dev' # 'prd'/'pre'/'qa'/'dev'
database_env = 'xx'
target_db_info = {
'user': 'xx',
'password': 'xx',
'host': 'xx',
'port': 6033,
'db': 'xx'
}
table_name = 'ai_chat_bot'
path = r'./qa_pair.csv'
data = pd.read_csv(path, sep='\t', encoding='utf-8')
data_add = list(range(len(data['question'])))
data.insert(0, 'id', data_add)
print(data)
# target connect
con_target = create_engine(
'mysql+pymysql://%(user)s:%(password)[email protected]%(host)s:%(port)d/%(db)s' %
target_db_info, encoding='utf-8')
data.to_sql(table_name, con_target, index=False, if_exists='replace')
print('導入成功...')
可以通過這種方式,在mysql直接創建索引
data.to_sql(table_name, con_target, index_label=['id'], if_exists='replace')
查詢符合條件的,一次性讀取進來,然後轉換成dict
SELECT id,answer FROM `ai_chat_bot` WHERE id in ('0', '1', '2', '3', '4')
1、直接在後面新增一列
指明列名,並賦值即可:
data[‘addlist’]=[1,2]
2、在指定位置新增一列
用insert()函數,data.insert(位置,列名,列值),例如:
data.insert(2,‘c’,’’)
3、根據現有列計算生成新的列
dataframe 根據某列的值生成新的列
df2[‘是否逾期’]=df2.apply(lambda x:0 if x.應付日期>today_time else 1,axis=1)
df2[‘是否到期90天’]=(today_time - df2.應付日期).map(lambda x:1 if x.days >= 90 else 0)
4、現有多列合並為一列
直接用+號即可,
dataframe[“newColumn”] = dataframe[“age”].map(str) + dataframe[“phone”] + dataframe["address”]
其中,map(str) :非string列轉換為string後再合並
CREATE INDEX index_id ON ai_chat_bot (id);
在執行CREATE TABLE語句時可以創建索引,也可以單獨用CREATE INDEX或ALTER TABLE來為表增加索引。
1、使用CREATE INDEX創建,語法如下:
CREATE INDEX indexName ON tableName (columnName(length));
例如我們對ip_address這一列創建一個長度為16的索引:
CREATE INDEX index_ip_addr ON t_user_action_log (ip_address(16));
2、使用ALTER語句創建,語法如下:
ALTER TABLE tableName ADD INDEX indexName(columnName);
ALTER語句創建索引,下面提供一個設置索引長度的例子:
ALTER TABLE t_user_action_log ADD INDEX ip_address_idx (ip_address(16));
SHOW INDEX FROM t_user_action_log;
3、建表的時候創建索引
CREATE TABLE tableName(
id INT NOT NULL,
columnName columnType,
INDEX [indexName] (columnName(length))
);