Advertisement
Guest User

Untitled

a guest
Feb 29th, 2016
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.82 KB | None | 0 0
  1. #! /usr/bin/python2.7
  2. # coding: utf-8
  3.  
  4. import peewee
  5. import cx_Oracle
  6. import os
  7.  
  8. class OracleDatabase(peewee.Database):
  9. def _connect(self, database, **kwargs):
  10. os.environ['NLS_LANG'] = 'JAPANESE_Japan.AL32UTF8'
  11. username = kwargs['username']
  12. password = kwargs['password']
  13. conn = cx_Oracle.connect(username, password, database)
  14. return conn
  15.  
  16. database = OracleDatabase(
  17. 'XXX.XXX.XXX.XXX/SID',
  18. username='username',
  19. password='password',
  20. )
  21.  
  22. class MyModel(peewee.Model):
  23. model_id = peewee.IntegerField(null=False)
  24.  
  25. class Meta:
  26. database = database
  27. db_table = 'my_model'
  28.  
  29.  
  30. def main():
  31. MyModel.create_table()
  32. m = MyModel.create(model_id=100)
  33.  
  34.  
  35. if __name__ == '__main__':
  36. main()
  37.  
  38. """
  39. Traceback (most recent call last):
  40. File "oracledriver.py", line 45, in <module>
  41. main()
  42. File "oracledriver.py", line 39, in main
  43. m = MyModel.create(model_id=100)
  44. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 4494, in create
  45. inst.save(force_insert=True)
  46. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 4680, in save
  47. pk_from_cursor = self.insert(**field_dict).execute()
  48. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3213, in execute
  49. cursor = self._execute()
  50. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2628, in _execute
  51. return self.database.execute_sql(sql, params, self.require_commit)
  52. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3461, in execute_sql
  53. self.commit()
  54. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3285, in __exit__
  55. reraise(new_type, new_type(*exc_args), traceback)
  56. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3454, in execute_sql
  57. cursor.execute(sql, params or ())
  58. peewee.DatabaseError: ORA-01036: 変数の名前/数が無効です。
  59.  
  60. Error in sys.excepthook:
  61. Traceback (most recent call last):
  62. File "/usr/lib/python2.7/dist-packages/apport_python_hook.py", line 63, in apport_excepthook
  63. from apport.fileutils import likely_packaged, get_recent_crashes
  64. File "/usr/lib/python2.7/dist-packages/apport/__init__.py", line 5, in <module>
  65. from apport.report import Report
  66. File "/usr/lib/python2.7/dist-packages/apport/report.py", line 16, in <module>
  67. from xml.parsers.expat import ExpatError
  68. File "/usr/lib/python2.7/xml/parsers/expat.py", line 4, in <module>
  69. from pyexpat import *
  70. ImportError: /usr/lib/python2.7/lib-dynload/pyexpat.x86_64-linux-gnu.so: undefined symbol: XML_SetHashSalt
  71.  
  72. Original exception was:
  73. Traceback (most recent call last):
  74. File "oracledriver.py", line 45, in <module>
  75. main()
  76. File "oracledriver.py", line 39, in main
  77. m = MyModel.create(model_id=100)
  78. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 4494, in create
  79. inst.save(force_insert=True)
  80. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 4680, in save
  81. pk_from_cursor = self.insert(**field_dict).execute()
  82. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3213, in execute
  83. cursor = self._execute()
  84. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 2628, in _execute
  85. return self.database.execute_sql(sql, params, self.require_commit)
  86. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3461, in execute_sql
  87. self.commit()
  88. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3285, in __exit__
  89. reraise(new_type, new_type(*exc_args), traceback)
  90. File "/usr/local/lib/python2.7/dist-packages/peewee.py", line 3454, in execute_sql
  91. cursor.execute(sql, params or ())
  92. peewee.DatabaseError: ORA-01036: 変数の名前/数が無効です。
  93. """
  94.  
  95. """
  96.  
  97. 生成されるSQL: INSERT INTO "my_model" (model_id) VALUES (?)
  98. パラメータ: [100]
  99.  
  100. cx_Oracleではプレースホルダを :1 や :field_name で書く。 ? は使え無いのでエラーになる
  101.  
  102. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement