Если вам не нужен MySQLdb, но я бы принял любую библиотеку, я бы очень, очень рекомендую MySQL Connector / Python из MySQL: http://dev.mysql.com/downloads/connector/python/ .
Это один пакет (около 110k), чистый Python, поэтому он независим от системы и мертв, простота установки. Вы просто загружаете, дважды щелкаете, подтверждаете лицензионное соглашение и идите. Нет необходимости в Xcode, MacPorts, компиляции, перезапуске ...
Затем вы подключаетесь как:
import mysql.connector
cnx = mysql.connector.connect(user='scott', password='tiger',
host='127.0.0.1',
database='employees')
try:
cursor = cnx.cursor()
cursor.execute("""
select 3 from your_table
""")
result = cursor.fetchall()
print result
finally:
cnx.close()
TEXT
и BLOB
хранятся вне таблицы, при этом в таблице имеется только указатель на место фактического хранения.
VARCHAR
хранится в строке с таблицей. VARCHAR
быстрее, когда размер является разумным, компромисс будет быстрее зависеть от ваших данных и вашего оборудования, вы захотите сравнить реальный сценарий с вашими данными.
Обновление Хранение VARCHAR
или TEXT
в строке или вне записи зависит от размера данных, размера столбцов, row_format и версии MySQL. При этом не зависит от "text" vs "varchar".
Просто для пояснения наилучшей практики:
Сообщения текстового формата почти всегда должны храниться как TEXT (в конечном итоге они произвольно длинные)
Строковые атрибуты должны храниться как VARCHAR (имя пользователя-получателя, тема и т.д....).
Я понимаю, что у вас есть лимит переднего конца, что очень здорово до тех пор, пока он не станет таковым. *Хитрость в том, чтобы думать о БД отдельно от приложений, которые к ней подключаются. То, что одно приложение накладывает ограничение на данные, не означает, что данные по своей природе ограничены.
Что такое в самих сообщениях, которые заставляют их никогда не быть больше 3000 символов? Если это просто произвольное ограничение приложения (скажем, для текстового поля или чего-то еще), используйте поле TEXT
на уровне данных.
Отказ от ответственности: я не эксперт по MySQL ... но это мое понимание проблем.
Я думаю, что TEXT хранится вне строки mysql, в то время как я думаю, что VARCHAR хранится как часть строки. Существует максимальная длина строки для mysql строк ... так что вы можете ограничить, сколько других данных вы можете хранить в строке, используя VARCHAR.
Также из-за того, что VARCHAR является частью строки, я подозреваю, что запросы, глядя на это поле, будут немного быстрее, чем те, которые используют фрагмент TEXT.