O professor passou um script em Python para não ter que comecar do zero , que é esse abaixo
import sqlite3
import os
import hashlib
from shutil import copyfile
db_file = r'C:\ProgramData\Team MediaPortal\MediaPortal\database\movingpictures.db3'
#LIMIT = 'LIMIT 2'
LIMIT = ''
def get_movies():
if not os.path.isfile(db_file):
return
file = open('listafilmes.txt', 'w')
file.write('DELETE FROM filmes;\n')
conn = sqlite3.connect(db_file)
query = conn.cursor()
query.execute("SELECT distinct title,directors,actors,year,genres,score,details_url,videoresolution,videoaspectratio,hassubtitles,coverthumbfullpath,summary FROM movie_info as mi, local_media__movie_info as lmmi, local_media as lm WHERE mi.id=lmmi.movie_info_id AND lmmi.local_media_id=lm.id ORDER BY title %s" % LIMIT)
for movie in query:
file.write('INSERT INTO filmes VALUES (\'\',')
for i in range(12):
# -- imprime o nome do filme no shell para conferencia
if i == 0:
print movie[0]
# -- diferencia os campos por tipo para impressao
if i == 3 or i == 5 or i == 9:
file.write("'%s" % repr(movie[i])) # -- campos numericos (ou não texto)
elif i == 10: # -- campo com o path completo da imagem da capa
coverpath, cover = os.path.split(movie[i])
file.write("'"+escape(cover.encode('utf-8'))) # -- pega apenas o nome do arquivo, sem o path
else:
file.write("'"+escape(movie[i].encode('utf-8'))) # -- outros capos de texto convertidos para utf-8
# -- se for o ultimo campo, não imprimir a virgula
if i < 11:
file.write("',")
else:
file.write("');\n")
conn.close()
# -- escape: escapa os caracteres ' e "
def escape(string):
string = str(string).replace(r"'", r"\'").replace(r'"',r'\"')
return string
if __name__ == '__main__':
print('get_movies ==> start')
get_movies()
print('get_movies ==> end')
ele pediu para alterar esse script para q ele não gere esse dump , mas sim 'fale' direto com o MySQl e que também envie as capas dos filmes direto pro servidor, eu não manjo nada de python , mas procurando na internet eu achei algumas informaçoes , instalei ele la em casa e tentei modificar o codigo, mas ele não roda de jeito nenhum.
o que eu queria saber era se alguém pode dar uma olhada no meu codigo e falar onde eu estou errando , o meu codigo é esse
import ftplib
import MySQLdb
import sqlite3
import os
import hashlib
from shutil import copyfile
db_file = r'C:\ProgramData\Team MediaPortal\MediaPortal\database\movingpictures.db3'
#LIMIT = 'LIMIT 2'
LIMIT = ''
def send_covers():
try:
dbConnection = MySQLdb.connect("localhost", "root", "")
except:
print "Erro ao conectar ao banco de dados"
exit()
dbConnection.select_db("movies")
dbCursor = dbConnection.cursor()
dbCursor.execute("SELECT cover FROM movies")
s = ftplib.FTP('myserver.com','login','password') # Connect
for linha in dbCursor:
f = open(linha[0],'rb') # file to send
s.storbinary('STOR '+linha[0], f) # Send the file
f.close() # Close file and FTP
s.quit()
def get_movies():
if not os.path.isfile(db_file):
return
file = open('listafilmes.txt', 'w')
file.write('DELETE FROM filmes;\n')
conn = sqlite3.connect(db_file)
query = conn.cursor()
try:
dbConnection = MySQLdb.connect("localhost", "root", "")
except:
print "Erro ao conectar ao banco de dados"
exit()
dbConnection.select_db("pythondb")
dbCursor = dbConnection.cursor()
query.execute("SELECT distinct title,directors,actors,year,genres,score,details_url,videoresolution,videoaspectratio,hassubtitles,coverthumbfullpath,summary FROM movie_info as mi, local_media__movie_info as lmmi, local_media as lm WHERE mi.id=lmmi.movie_info_id AND lmmi.local_media_id=lm.id ORDER BY title %s" % LIMIT)
for movie in query:
insert = 'INSERT INTO filmes VALUES (\'\','
for i in range(12):
# -- imprime o nome do filme no shell para conferencia
if i == 0:
print movie[0]
# -- diferencia os campos por tipo para impressao
if i == 3 or i == 5 or i == 9:
insert += "'%s" % repr(movie[i]) # -- campos numericos (ou não texto)
elif i == 10: # -- campo com o path completo da imagem da capa
coverpath, cover = os.path.split(movie[i])
insert += "'"+escape(cover.encode('utf-8')) # -- pega apenas o nome do arquivo, sem o path
else:
insert += "'"+escape(movie[i].encode('utf-8')) # -- outros capos de texto convertidos para utf-8
# -- se for o ultimo campo, não imprimir a virgula
if i < 11:
insert += "',"
else:
insert += "');\n"
dbCursor.execute(insert)
dbConnection.commit()
conn.close()
# -- escape: escapa os caracteres ' e "
def escape(string):
string = str(string).replace(r"'", r"\'").replace(r'"',r'\"')
return string
if __name__ == '__main__':
print('get_movies ==> start')
get_movies()
print('get_movies ==> end')
send_covers()
obrigado
e desculpa pelo tamanho do post , eu tentei usar spoiler mas ficava dando erro . quando eu colocava a partir do menu aparecia um pop up com erro 404 e quando eu coloquei na mao ele ignorou =p
Pergunta
mendes.frost
Ola eu estou fazendo um trabalho para a materia de banco de dados da faculdade em que eu tenho que fazer um site tipo esse guifonseca.floripa.com.br/cgi-bin/filmes.cgi
O professor passou um script em Python para não ter que comecar do zero , que é esse abaixo
obrigado
e desculpa pelo tamanho do post , eu tentei usar spoiler mas ficava dando erro . quando eu colocava a partir do menu aparecia um pop up com erro 404 e quando eu coloquei na mao ele ignorou =p
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.