SQLAlchemy插入表中

时间:2013-11-13 20:40:28

标签: python sqlite sqlalchemy

因此,我有多个具有多个值的数组,我想将这些值插入到先前创建的表中。

我写的代码就是:

#!/usr/bin/env python

import glob,os, csv
from sqlalchemy import *
count = 0
served_imsi = []
served_imei = []
served_msisdn = []
location_area_code = []
routing_area = []
cell_identity = []
service_area_code = []
s_charging_characteristics = []
plmn_id = []

path = '/home/cneps/cdr/*.cdr'
for file in glob.glob(path):
 f = open(file)
  for lines in f:
    served_imsi.append(lines[17:17+16])
    served_imei.append(lines[47:47+16])
    served_msisdn.append(lines[65:65+18])
    sgsn_address.append(lines[83:83+32])
    ggsn_address.append(lines[115:115+32])
    charging_id.append(lines[147:147+10])
    apn_network.append(lines[157:157+63])
    location_area_code.append(lines[296:296+4])
    routing_area.append(lines[300:300+2])
    cell_identity.append(lines[302:302+4])
    service_area_code.append(lines[306:306+4])
    s_charging_characteristics.append(lines[325:325+2])
    plmn_id.append(lines[327:327+6])

db = create_engine('sqlite:///TIM_CDR.db',echo=True)
metadata = MetaData(db)
CDR1 = Table('CDR1', metadata, autoload=False)
i = CDR1.insert()

while count < len(served_imei):

    i.execute(Served_IMSI=served_imsi[count], Served_IMEI=served_imei[count], Served_MSISDN=served_msisdn[count], SGSN_Address=sgsn_address[count], GGSN_Address=ggsn_address[count], Charging_ID=charging_id[count], APN_Network=apn_network[count], LAC=location_area_code[count], RAC=routing_area[count], Cell_Identity=cell_identity[count], Service_Area_Code=service_area_code[count], S_Charging_Characteristics=s_charging_characteristics[count], PLMN_ID=plmn_id[count])
    count += 1

运行代码后,这就是我在终端上的内容:

2013-11-13 20:31:11,564 INFO sqlalchemy.engine.base.Engine INSERT INTO "CDR1" DEFAULT VALUES
2013-11-13 20:31:11,566 INFO sqlalchemy.engine.base.Engine ()
2013-11-13 20:31:11,567 INFO sqlalchemy.engine.base.Engine ROLLBACK
Traceback (most recent call last):
  File "./process_cdr.py", line 45, in <module>
    i.execute(Served_IMSI=served_imsi[count], Served_IMEI=served_imei[count], Served_MSISDN=served_msisdn[count], SGSN_Address=sgsn_address[count], GGSN_Address=ggsn_address[count], Charging_ID=charging_id[count], APN_Network=apn_network[count], LAC=location_area_code[count], RAC=routing_area[count], Cell_Identity=cell_identity[count], Service_Area_Code=service_area_code[count], S_Charging_Characteristics=s_charging_characteristics[count], PLMN_ID=plmn_id[count])
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/sql/expression.py", line 3147, in execute
    return e._execute_clauseelement(self, multiparams, params)
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/engine/base.py", line 1621, in _execute_clauseelement
    return connection._execute_clauseelement(elem, multiparams, params)
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/engine/base.py", line 761, in _execute_clauseelement
    compiled_sql, distilled_params
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/engine/base.py", line 874, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/engine/base.py", line 1024, in _handle_dbapi_exception
    exc_info
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/util/compat.py", line 196, in raise_from_cause
    reraise(type(exception), exception, tb=exc_tb)
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/engine/base.py", line 867, in _execute_context
    context)
  File "/usr/local/lib/python2.7/dist-packages/SQLAlchemy-0.8.3-py2.7.egg/sqlalchemy/engine/default.py", line 324, in do_execute
    cursor.execute(statement, parameters)
sqlalchemy.exc.DatabaseError: (DatabaseError) file is encrypted or is not a database u'INSERT INTO "CDR1" DEFAULT VALUES' ()

我不知道它意味着什么,更不知道如何解决它。

非常感谢任何帮助。

由于

0 个答案:

没有答案