Pull to refresh

Comments 15

Природа настолько отчистилась за время карантина, что даже автор продолжил топик через 3.5 года. А так спасибо за все материалы, будут ли дальше какие-либо статьи по orm в питоне? Может сравнение актуальных?
Как говорится, лучше поздно, чем никогда.
По ORM и базам данных больше статей пока не планирую, а там время покажет.
Я веду свои биологические записи в exel и все это надо будет потом подготовить и перевести в базу данных, проблема в том, что в настоящих базах данных я не работал. Хотелось бы узнать о таблицах больше
Из Excel данные можно сохранить в виде CSV файла (текстовый формат с разделителями), а потом с помощью Python считать этот CSV (есть функции в стандартной библиотеке) и сохранить в базу.
Это достаточно стандартные вещи, которым посвящено масса материалов в сети.

Можете продолжить работу с данными в Excel, а обработку, структурирование и анализ делать программно тем же Python-ом. Для обращения к данным в файлах Excel имеются питоновские библиотеки, задав в поисковике - "python excel" Вы о них узнаете. Например: xlrd, xlwt, xlutils, openpyxl, pandas, pyexcel.

Можно подключаться непосредственно к приложению Excel, как к COM-объекту - https://habr.com/ru/post/232291/#com

Все вроде отлично, но с Mysql завести не могу вообще.
PS
Я новичок в Python
Все вроде отлично, но с Mysql завести не могу вообще.
Прежде всего убедитесь, что у Вас правильно настроено соединение с базой.
conn = SqliteDatabase('Chinook_Sqlite.sqlite')
Вместо этой строки из примера должно быть соединение с Вашей базой.
Вот тут например посмотрите как оно делается.
Я попробовал два варианта
db_204 = mysql.connector.connect(
host = '192.168.22.204',
user = '1',
password = '1',
database = 'user'
)
print(db_204)

Ответ <mysql.connector.connection_cext.CMySQLConnection object at 0x7f95a0063580>
db_204 = MySQLDatabase(
host = '192.168.22.204',
user = '1',
password = '1',
database = 'user'
)

Ответ <peewee.MySQLDatabase object at 0x7fb4b0063820>

Потом попробовал…
class BaseModel(Model):
class Meta:
database = db_204 # соединение с базой, из шаблона выше

class Firms(BaseModel):
firm_id = AutoField(column_name='id')
name = TextField(column_name='name', null=True)

class Meta:
table_name = 'firms'

query = Firms.select().where(Firms.firm_id < 10).limit(5).order_by(Firms.firm_id.desc())
firms_selected = query.dicts().execute()

Сам запрос получается корректным, я проверял на phpmyadmin, он выдает то что надо. Но вот в Python выдает ошибку
Traceback (most recent call last):
File "peewee_my.py", line 33, in firms_selected = query.dicts().execute()
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 1898, in inner
return method(self, database, *args, **kwargs)
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 1969, in execute
return self._execute(database)
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 2141, in _execute
cursor = database.execute(self)
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 3142, in execute
return self.execute_sql(sql, params, commit=commit)
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 3127, in execute_sql
cursor = self.cursor(commit)
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 3111, in cursor
self.connect()
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 3065, in connect
self._state.set_connection(self._connect())
File "/Users/maciborka/Library/Python/3.8/lib/python/site-packages/peewee.py", line 3964, in _connect
raise ImproperlyConfigured('MySQL driver not installed!')
peewee.ImproperlyConfigured: MySQL driver not installed!
Нашел причину. Надо было поставить pip install mysqlclient

Сложно с этими библиотеками, только с опытом будет понятно что и как.
Можете подсказать, как все библиотеки четко в конфиге держать, что бы потом на любом сервере быстро развернуть?

Спасибо.
Можете подсказать, как все библиотеки четко в конфиге держать, что бы потом на любом сервере быстро развернуть?
Для этого используется виртуальное окружение venv.
Спасибо, за ответ.
Я не про это…

Я нашел что я хотел. Это файл с описанием всех пакетов которые вносятся в проект. Потом на любом сервер одной командой все зависимости ставятся.

pip install -r requirements.txt
Это именно про это.
Потому как если у Вас в одном окружении все проекты, то данная команда будет тащить ВСЕ установленные модули. А если Вы для каждого проекта создадите свое виртуальное окружение, то модули будут изолированы и можно будет сохранять/переносить только актуальные для данного проекта модули.
Точнее не эта команда будет тащить все модули, а команда записи зависимостей в файл, с которого потом их будете читать.
Все что будет в файле обычно это то что надо для проекта. У каждого проекта свой файл.
Если использовать стандартный класс:
from peewee import MySQLDatabase

то у меня возникала точно такая же ошибка. Но можно не устанавливать никаких дополнительных библиотек, а использовать расширенный класс из стандартного пакета peewee:
from playhouse.mysql_ext import MySQLConnectorDatabase

Данный класс нормально подключается и работает без установки чего-либо дополнительного.
Sign up to leave a comment.

Articles