import pymysql python。 保存时对ts_code列中 883开头的 使用replace 其余的使用append
时间: 2024-03-20 16:41:51 浏览: 109
好的,如果您使用的是 MySQL 数据库,可以使用以下代码实现:
```python
import pandas as pd
import pymysql
# 建立数据库连接
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='password',
database='database_name'
)
# 读取数据
df = pd.read_csv('data.csv')
# 筛选出ts_code列中以883开头的数据
replace_df = df[df['ts_code'].str.startswith('883')]
# 筛选出ts_code列中不以883开头的数据
append_df = df[~df['ts_code'].str.startswith('883')]
# 将replace_df保存到to表中,使用replace模式
with conn.cursor() as cursor:
cursor.execute('DROP TABLE IF EXISTS to')
replace_df.to_sql('to', conn, index=False)
# 将append_df保存到to表中,使用append模式
append_df.to_sql('to', conn, if_exists='append', index=False)
# 关闭数据库连接
conn.close()
```
这里的代码中,我假设您已经安装了 PyMySQL 库,并将其导入。同时,您需要将代码中的 `localhost`、`port`、`user`、`password`、`database_name` 等参数进行相应修改,以符合您的实际情况。
另外,为了确保 replace 操作能够正确执行,我们需要先使用 `DROP TABLE` 命令将原有的表删除。所以,在保存 replace_df 数据之前,我们需要先执行一次 `DROP TABLE`。这里使用了 `with conn.cursor() as cursor:` 的方式,可以确保在操作完成后自动关闭游标,避免出现内存泄漏等问题。
最后,如果您的数据中包含中文字符,建议在连接数据库时设置字符集,例如:
```python
conn = pymysql.connect(
host='localhost',
port=3306,
user='root',
password='password',
database='database_name',
charset='utf8'
)
```
这样可以避免出现中文乱码等问题。
阅读全文