Форум сайта python.su
0
Нашел на Хабре простенькую статейку о ORM http://habrahabr.ru/post/207110/
Пытаюсь используя ORM подключитьсяк БД (FireBird) и научиться с ней работать.
Реквизиты доступа правильные (тут они не указаны). Вот сам код:
from peewee import * import fdb import gvar class Person(Model): name = CharField() class Meta: database = db def checkfdbconnection(): try: db = fdb.connect(dsn=gvar.dbhost, user=gvar.dbuser, password=gvar.dbpass) print "Connected to FireBird DB" try: Person.create_table() # Вот тут вроде как таблицу создаем except: print "Can't create DB" except: print "[ERROR] \t Could not connect ro FireBird DB" checkfdbconnection()
Офлайн
9
class Person(Model): name = CharField() class Meta: database = db
Офлайн
0
alexsis, а как правильно все это сделать?
Офлайн
88
У Вас там по ссылке всё есть.
from peewee import * db = SqliteDatabase('people.db') class Person(Model): name = CharField() birthday = DateField() is_relative = BooleanField() class Meta: database = db # модель будет использовать базу данных 'people.db'
Офлайн
0
Shaman, я не могу понять, как мне использовать провайдер именно моей БД? Тут же sqllite, а у меня Firebird.
Я тут пытаюсь сделать что-то в духе:
db = fdb.connect(dsn=gvar.dbhost, user=gvar.dbuser, password=gvar.dbpass) class Person(Model): name = CharField() class Meta: database = db per = Person() per.create_table
Отредактировано Suliman (Апрель 24, 2014 13:30:58)
Офлайн
88
Проблема не в провайдере.
from peewee import * import fdb import gvar db = None class Person(Model): name = CharField() class Meta: database = db def checkfdbconnection(): global db try: db = fdb.connect(dsn=gvar.dbhost, user=gvar.dbuser, password=gvar.dbpass) print "Connected to FireBird DB" try: Person.create_table() # Вот тут вроде как таблицу создаем except: print "Can't create DB" except: print "[ERROR] \t Could not connect ro FireBird DB" checkfdbconnection()
Офлайн
0
В итоге не получается. Оно соединяется с БД, но ничего там создать не может. Как продиагностировать причину не знаю.
from peewee import * import fdb import gvar db = None class Person(Model): name = CharField() class Meta: database = db def checkfdbconnection(): global db try: db = fdb.connect(dsn=gvar.dbhost, user=gvar.dbuser, password=gvar.dbpass) print "Connected to FireBird DB" try: Person.create_table() # except: print "Can't create DB" except: print "[ERROR] \t Could not connect ro FireBird DB" checkfdbconnection()
Отредактировано Suliman (Апрель 24, 2014 14:12:07)
Офлайн
0
Следующий код вообще приводит к ошибке:
db = fdb.connect(dsn=gvar.dbhost, user=gvar.dbuser, password=gvar.dbpass) class Person(Model): name = CharField() class Meta: database = db Person.create_table()
D:\Project\2014\archproject>test.py
Traceback (most recent call last):
File "D:\Project\2014\archproject\test.py", line 11, in <module>
Person.create_table()
File "C:\Python27\ArcGIS10.2\lib\site-packages\peewee.py", line 2999, in creat
e_table
if db.sequences and pk.sequence:
AttributeError: 'Connection' object has no attribute 'sequences'
Офлайн
88
http://peewee.readthedocs.org/en/latest/peewee/database.html
The Database encapsulates functionality specific to a given db driver. For example difference in column types across database engines, or support for certain features like sequences.
Офлайн
9
SQLAlchemy вроде как с Firebird дружит.
Офлайн