27. februar 2009 - 20:13
Der er
18 kommentarer og 1 løsning
sidste post en en ODBC database
Hey er der en måde at få den sidste post i en ODBC database i python? sådan ser min kode ud: Con = odbc.odbc("dbtest") Cursor = Con.cursor() Cursor.execute("SELECT * FROM LOG WHERE ENAME = 'u1vPT1'") Result = Cursor.fetchone() #.fetchall() print Result //Ronni
Annonceindlæg fra Computerworld it-jobbank
27. februar 2009 - 22:23
#1
SELECT TOP 1 * FROM log WHERE ENAME = 'u1vPT1' ORDER BY id DESC hvis MS SQLServer SELECT * FROM log WHERE ENAME = 'u1vPT1' ORDER BY id DESC LIMIT 1 hvis MySQL o.s.v. (id er det felt som angiver hvad der er "sidst")
27. februar 2009 - 23:49
#2
Det har jeg prøve men da det er en 2 Gb database tager den sql sætning for lang tid at kører... Tænkte på om der måske var en form for Cursor.fetchone() som måske kunne fortælle ODBCén er den skal kun tage den sidste post
27. februar 2009 - 23:50
#3
Som det er lige nu tager det ca 4 min at kører: SELECT TOP 1 * FROM log WHERE ENAME = 'u1vPT1' ORDER BY id DESC og jeg vil gerne med på max 10 sec. hvis det kan lad sig gøre
28. februar 2009 - 00:17
#4
put index på id feltet !
28. februar 2009 - 00:18
#5
Så skulle det tage under 1/10 sekund.
02. marts 2009 - 17:23
#6
har snakket med firmaet der har lavet databasen i dag og det var desværre ikke en mulighed... men de sage at jeg skulle soter efter date men nu kommer den med en fejl som jeg ikke kan forstå: today = datetime.datetime.now() Con = odbc.odbc("dbtest") Cursor = Con.cursor() Cursor.execute("SELECT DATE FROM LOG WHERE ENAME = 'u1vPT1' and DATE = "%today) Result = Cursor.fetchone() #.fetchall() print today print Result Cursor.execute("SELECT DATE FROM LOG WHERE ENAME = 'u1vPT1' and DATE = "%today) TypeError: not all arguments converted during string formatting
02. marts 2009 - 17:58
#7
Der mangler da noget i den formatstring ! Cursor.execute("SELECT DATE FROM LOG WHERE ENAME = 'u1vPT1' and DATE = %s" % today) måske
02. marts 2009 - 18:18
#8
når jeg prøver det får jeg denne fejl: Cursor.execute("SELECT DATE FROM LOG WHERE ENAME = 'u1vPT1' and DATE = %s" % today) dbi.progError: [Seven Technologies][IGSS32 ODBC Driver]Unexpected extra token: 18 in EXEC
02. marts 2009 - 18:22
#9
Så er den gal med dato formatet ! Du skal så have formateret today i det format som databasen/driveren forventer.
02. marts 2009 - 18:24
#10
dettet er det jeg får ud fra DATE posten: datetime.datetime(2008, 11, 30, 22, 0) så du har nok ret i at det er forkert det jeg gør.
02. marts 2009 - 18:38
#11
jeg har prøvet at ændre det til dette: today = time.strftime("%y-%m-%d %H:%M:%S") da jeg får: datetime.datetime(2008, 11, 30, 22, 0) ud fra databasen men det giver stadig samme fejl
02. marts 2009 - 18:57
#12
Hvilket format forventer database ?
02. marts 2009 - 18:58
#13
Og skal der evt. nogle special tegn omkring f.eks. '' eller ## eller ... ?
02. marts 2009 - 19:09
#14
dette er hvad jeg har fra dokumentationen: The date and time of the logged value (in seconds), for example, 22-04-99 10:57:25
02. marts 2009 - 19:10
#15
og så står der SQL type: TIMESTAMP
03. marts 2009 - 04:03
#16
Det er jo rent gætværk når ikke vi ved mere. Prøv: Cursor.execute("SELECT DATE FROM LOG WHERE ENAME = 'u1vPT1' and DATE = '%s'" % today)
03. marts 2009 - 04:03
#17
Jeg har sat '' omkring datoen.
13. marts 2009 - 10:04
#18
Jeg tror bare vi dropper det da jeg tror det er fordi den dll driver der er lavet til systemet ikke kan håndter det jeg smider efter den... Men smider du ikke et svar for du skal have points for din hjælp.
13. marts 2009 - 14:30
#19
ok
Kurser inden for grundlæggende programmering