我对python非常陌生,我正在尝试使用SQLalchemy和SQLite3构建这个数据库
有一个csv文件的zip文件,我正试图处理并放入SQLite数据库。我已经将csv文件转换为表,其中一个表包含一个需要进行子串处理的列
基本上,该列可能有如下数据:
“xxxx治疗阶段:DCDFDSSF临床标准:DSFSF人群标准:SDFDDFDF治疗标准:XXSDSA”
在一个单元格中,我试图将短语“治疗阶段”之前的字符串,以及“治疗阶段”和“临床标准”之间、“临床标准”和“总体标准”之间以及“总体标准”和“治疗标准”之间的字符串分隔开,但是一个单元格可能没有这些关键字中的一个或任何一个。
在我尝试将此列作为子字符串之前,数据库运行得出人意料。
现在什么都没发生。它好像是在一个循环或什么东西,但不知道如何检查这一点我已经删除了其他表的所有其他代码)
txt文件可以在这里找到:http://www.pbs.gov.au/downloads/2019/10/2019-10-01-extracts-down-converted.zip
from numpy import genfromtxt
from time import time
from datetime import datetime
from sqlalchemy import Column, Integer, Float, Date, String, ForeignKey,
Numeric, Table, Text
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker, relationship
import sqlalchemy
def Load_Data_tab(file_name):
data = genfromtxt(file_name, dtype='unicode', delimiter = "\t",
skip_header=False, converters={0: lambda s: str(s)})
return data.tolist()
Base = declarative_base()
fN_Restriction = "RestrictionExtract_191001.txt"
class Restrictions(Base):
__tablename__ = 'restrict'
IndicatId1 = Column(Text, primary_key=True)
RestrictIndicatText = Column(Text)
MiscRestrictFlag = Column(Integer)
DateRequireFlag = Column(String(1))
TextRequireFlag = Column(String(1))
TreatmentPhase = Column(Text)
TreatmentCriteria = Column(Text)
ClinicalCriteria = Column(Text)
PopulationCriteria = Column(Text)
if __name__ == "__main__":
#Create the database
engine = create_engine('sqlite:///csv_test.db')
Base.metadata.create_all(engine)
#Create the session
session = sessionmaker()
session.configure(bind=engine)
s = session()
# Build Restriction Table
try:
data = Load_Data_tab(fN_Restriction)
for i in data:
ChopString = i[1]
TP = ChopString.find('Treatment Phase:')
CC = ChopString.find('Clinical criteria:')
PC = ChopString.find('Population criteria:')
TC = ChopString.find('Treatment criteria:')
if TP = 0:
if CC = 0:
if PC = 0:
if TC = 0:
RestrictIndicatText1 = i[1]
else:
RestrictIndicatText1 = ""
if TP > 0:
RestrictIndicatText1 = ChopString[1:(TP-1)]
if CC > 0:
TreatmentPhase1 = ChopString[TP:(CC-1)]
elif PC > 0:
TreatmentPhase1 = ChopString[TP:(PC-1)]
elif TC > 0:
TreatmentPhase1 = ChopString[TP:(TC-1)]
else:
TreatmentPhase1 = ChopString[TP:]
if CC > 0:
if TP = 0:
RestrictIndicatText1 = ChopString[1:(CC-1)]
if PC > 0:
ClinicalCriteria1 = ChopString[CC:(PC-1)]
elif TC > 0:
ClinicalCriteria1 = ChopString[CC:(TC-1)]
else:
ClinicalCriteria1 = ChopString[CC:]
if PC > 0:
if TP = 0:
if CC = 0:
RestrictIndicatText1 = ChopString[1:(PC-1)]
if TC > 0:
PopulationCriteria1 = ChopString[PC:(TC-1)]
else:
PopulationCriteria1 = ChopString[PC:]
if TC > 0:
if TP = 0:
if CC = 0:
if PC = 0:
RestrictIndicatText1 = ChopString[1:(TC-1)]
TreatmentCriteria1 = ChopString[TC:]
record = Restrictions(IndicatId1 = i[0], RestrictIndicatText = RestrictIndicatText1, MiscRestrictFlag = i[2], DateRequireFlag = i[3], TextRequireFlag = i[4], TreatmentPhase = TreatmentPhase1, TreatmentCriteria = TreatmentCriteria1, ClinicalCriteria = ClinicalCriteria1, PopulationCriteria = PopulationCriteria11)
record.IndicatId1 = str(record.IndicatId1)[2:-1]
s.add(record) #Add all the records
s.commit() #Attempt to commit all the records
finally:
s.close() #Close the connection
目前没有回答
相关问题 更多 >
编程相关推荐