How to use MySQL in Python/ru

From SHellium Wiki
Jump to: navigation, search
Geographylogo.png In other languages: English | Afrikaans | Albanian | Arabic | Brazilian | Bulgarian | Catalan | Chinese | Croatian | Czech | Danish | Dutch | Esperanto | Estonian | Filipino | Finnish | Flemish | French | German | Greek | Hebrew | Hindi | Hungarian | Indonesian | Italian | Japanese | Latvian | Lithuanian | Macedonian | Malay | Malayalam | Norwegian (Bokmål) | Norwegian (Nynorsk) | Persian | Polish | Portuguese | Romanian | Russian | Serbian | Slovak | Slovenian | Spanish | Swedish | Turkish | Ukrainian | Urdu


 #!/usr/bin/python
 
 import sys
 import MySQLdb
 
 hostname = '127.0.0.1'
 username = 'user'
 password = 'pass'
 database = 'db'
 
 try:
   conn = MySQLdb.connect (host = hostname,
                           user = username,
                           passwd = password,
                           db = database,
   )
 except MySQLdb.Error, e:
   print "Error %d: %s" % (e.args[0], e.args[1])
   sys.exit(1)
 
 cursor = conn.cursor()
 
 sql = """
 select *
 from dual
 """
 
 cursor.execute( sql )
 
 
 while (1):
   row = cursor.fetchone ()
   if row == None:
     break
   print row

Вам понравилось использовать базу данных с Питоном, и вы думаете, что MySQL это хороший выбор? Неплохо! Сперва, создайте базу данных следуя одному из руководств доступных в Вики, и храните информацию в удобном виде. Чтобы присоединиться вам потребуется следующее.

Сперва, поместите следующее в секцию(область) импорта вашего скрипта:

import _mysql

Потом, найдите где начинается главная часть вашей программы, и поместите следующее:

db = _mysql.connect(YOUR DATABASE HOST, YOUR USERNAME, YOUR PASSWORD, NAME OF THE DATABASE)

В областе функций вашей программы поместите следующее:

def FetchAll(query, method=1):
  global db
  
  db.query(query)
  r = db.use_result()
  return r.fetch_row(0, method)

def FetchOne(query, method=1):
  global db
  
  db.query(query)
  r = db.use_result()
  try:
    row = r.fetch_row(1, method)[0]
  except:
    row = None

  return row

Хотя вы могли бы напрямую обращаться к модулю _mysql , данные функции делают это намного проще.

К примеру, вы хотите запустить SELECT * FROM `users`. Можно сделать так:

users = FetchAll("SELECT * FROM `users`")
for user in users:
  print user['username']

Или если вы хотите выбрать лишь одного пользователя:

user = FetchOne("SELECT * FROM `users` WHERE `username` = 'admin' LIMIT 1")
print user['username']

Если вы получаете ошибку относительно того, что объект db недоступен, возможно,что вы пытаетесь обратиться к нему как к локальной переменной. Поместите следующее в начале функции, которая выдает ошибку:

global db
Personal tools
Namespaces

Variants
Actions
Navigation
Indexes
SHellium Sites
Toolbox