kenken999 commited on
Commit
dacee8e
1 Parent(s): 3cc805b

sqlalchemy

Browse files
Files changed (2) hide show
  1. polls/databases/insert_line.py +39 -18
  2. requirements.txt +1 -0
polls/databases/insert_line.py CHANGED
@@ -1,6 +1,7 @@
1
  import pandas as pd
2
  import re
3
- from sqlalchemy import create_engine, inspect, Table, MetaData, Column, Integer, String, text, Sequence
 
4
  import psycopg2
5
 
6
  # チャット履歴ファイルを読み込む関数(最初の3行をスキップ)
@@ -40,30 +41,50 @@ def connect_to_db():
40
  )
41
  return conn
42
 
43
- # ファイルパスの設定
44
- input_file_path = 'path/to/your/chat_history.csv' # エクスポートされたチャット履歴ファイルのパス
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
- # チャット履歴を読み込み、特定の列の個人情報をマスク
47
- chat_history_df = load_chat_history(input_file_path)
48
- columns_to_mask = ['送信者タイプ', '送信者名', '送信日', '送信時刻', '内容']
49
- masked_chat_history_df = mask_specific_columns(chat_history_df, columns_to_mask)
50
 
51
  # データベースの接続設定
52
  engine = create_engine('postgresql+psycopg2://miyataken999:yz1wPf4KrWTm@ep-odd-mode-93794521.us-east-2.aws.neon.tech:5432/neondb')
53
 
54
- # テーブルが存在しない場合に作成
55
- if not inspect(engine).has_table("fasis_chat_history"):
56
- metadata = MetaData()
57
- Table('fasis_chat_history', metadata,
58
- Column('id', Integer, Sequence('user_id_seq'), primary_key=True, autoincrement=True),
59
- *(Column(name, String) for name in masked_chat_history_df.columns),
60
- Column('AnswerField', String))
61
- metadata.create_all(engine)
 
 
 
 
 
 
 
 
 
62
 
63
- # マスクされたデータをPostgreSQLにインポート
64
- masked_chat_history_df.to_sql('fasis_chat_history', engine, if_exists='replace', index=False)
65
 
66
- print("データのインポートが完了しました。")
67
 
68
  # データベースに接続してクエリを実行する関数
69
  def execute_query(query, engine):
 
1
  import pandas as pd
2
  import re
3
+ import os
4
+ from sqlalchemy import create_engine, inspect, Table, MetaData, Column, Integer, String, text
5
  import psycopg2
6
 
7
  # チャット履歴ファイルを読み込む関数(最初の3行をスキップ)
 
41
  )
42
  return conn
43
 
44
+ # フォルダー内のすべてのCSVファイルを処理し、PostgreSQLにインポートする関数
45
+ def process_and_import_csv_folder(folder_path, engine):
46
+ # フォルダー内のすべてのCSVファイルを取得
47
+ csv_files = [f for f in os.listdir(folder_path) if f.endswith('.csv')]
48
+
49
+ for csv_file in csv_files:
50
+ file_path = os.path.join(folder_path, csv_file)
51
+
52
+ # チャット履歴を読み込み、特定の列の個人情報をマスク
53
+ chat_history_df = load_chat_history(file_path)
54
+ columns_to_mask = ['送信者タイプ', '送信者名', '送信日', '送信時刻', '内容']
55
+ masked_chat_history_df = mask_specific_columns(chat_history_df, columns_to_mask)
56
+
57
+ # マスクされたデータをPostgreSQLにインポート
58
+ masked_chat_history_df.to_sql('fasis_chat_history', engine, if_exists='append', index=False)
59
 
60
+ # ファイルパスの設定
61
+ folder_path = '/home/user/app/polls/databases/test.csv' # CSVファイルが格納されているフォルダーのパス
 
 
62
 
63
  # データベースの接続設定
64
  engine = create_engine('postgresql+psycopg2://miyataken999:yz1wPf4KrWTm@ep-odd-mode-93794521.us-east-2.aws.neon.tech:5432/neondb')
65
 
66
+ # テーブルを再作成
67
+ metadata = MetaData()
68
+
69
+ if inspect(engine).has_table("fasis_chat_history"):
70
+ table = Table('fasis_chat_history', metadata, autoload_with=engine)
71
+ table.drop(engine)
72
+
73
+ table = Table('fasis_chat_history', metadata,
74
+ Column('id', Integer, primary_key=True, autoincrement=True),
75
+ Column('送信者タイプ', String),
76
+ Column('送信者名', String),
77
+ Column('送信日', String),
78
+ Column('送信時刻', String),
79
+ Column('内容', String),
80
+ Column('AnswerField', String))
81
+
82
+ metadata.create_all(engine)
83
 
84
+ # フォルダー内のすべてのCSVファイルを処理し、PostgreSQLにインポート
85
+ process_and_import_csv_folder(folder_path, engine)
86
 
87
+ print("すべてのCSVファイルのデータインポートが完了しました。")
88
 
89
  # データベースに接続してクエリを実行する関数
90
  def execute_query(query, engine):
requirements.txt CHANGED
@@ -56,3 +56,4 @@ torchvision
56
  transformers
57
  langchain
58
  langchain_groq
 
 
56
  transformers
57
  langchain
58
  langchain_groq
59
+ sqlalchemy