pandas函数参考:https://pandas.pydata.org/docs/reference/api/pandas.read_csv.html#pandas.read_csv
sql语句参考:https://www.runoob.com/sql/sql-in.html
代码1
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)s@%(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('导入成功...')
代码2
可以通过这种方式,在mysql直接创建索引
data.to_sql(table_name, con_target, index_label=['id'], if_exists='replace')
代码3
查询符合条件的,一次性读取进来,然后转换成dict
SELECT id,answer FROM `ai_chat_bot` WHERE id in ('0', '1', '2', '3', '4')
1、增加标题
2、确定好分隔符
3、python dataframe新增一列
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后再合并
4、mysql创建索引
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))
);