2017-02-15 75 views
0

Я пытаюсь получить все данные из таблицы, используя только одно соединение. Вот псевдо-код:получить обновленную таблицу из базы данных - MySQLdb

import MySQLdb 

db = MySQLdb.connect(host,user,pass,db) 
def some_fun(): 
    global db 
    cur=db.cursor() 
    cur.execute("SELECT * FROM TableName") 
    result = cur.fetchall() 
    for i in result: 
     print i 
    cur.close() 

while True: 
    some_fun() 

Этот код не работает, и каждый раз дает те же пластинки в результате даже содержимое таблицы изменилось.

Как добиться множественного запроса одним подключением и не открывать соединение каждый раз, когда мне нужно получить содержимое таблицы.

Благодаря

+0

Чтобы получить все данные из таблицы 'cur.execute (" SELECT * FROM TableName ")' эта часть вашего кода уже есть. в то время как цикл не нужен. – metmirr

+0

, но есть и другой код, который вставляет данные в эту же таблицу .. поэтому мой цикл while получает меня обновленную таблицу –

ответ

0

Если ваш основной проблемой является повторное использование без закрытия СВЯЗЬ и открытия ее повторно, вы можете сделать что-то вроде следующего.

Курсор не будет закрываться, и каждый новый запрос будет извлекать обновленные данные внутри таблицы.

import MySQLdb 

class Dbconnect(object): 
    def __init__(self): 
     self.dbconection = MySQLdb.connect(host='host', port=int('port'), user='user', passwd'passwd', db='schema_db') 
     self.dbcursor = self.dbconection.cursor() 


db = Dbconnect() 
# conection made before the infinite loop 
while True: 
    db.dbcursor.execute() 
    # use an iterator to view results. This consumes the cursor 
    for row in db.dbcursor: 
     print row