相关疑难解决方法(0)

sql查询中的python列表作为参数

我有一个python列表,比如l

l = [1,5,8]
Run Code Online (Sandbox Code Playgroud)

我想编写一个sql查询来获取列表中所有元素的数据

select name from students where id = |IN THE LIST l|
Run Code Online (Sandbox Code Playgroud)

我该如何做到这一点?

python sql

106
推荐指数
8
解决办法
9万
查看次数

Python和MySql:Unicode和编码

我正在解析json数据并尝试将一些json数据存储到Mysql数据库中.我目前正在关注unicode错误.我的问题是我应该如何处理这个问题.

  • 我应该从数据库端处理它,如果是这样,我怎么能修改我的表呢?
  • 我应该从python那边处理它吗?

这是我的表格结构

CREATE TABLE yahoo_questions (
   question_id varchar(40) NOT NULL, 
   question_subj varbinary(255), 
   question_content varbinary(255),
   question_userId varchar(40) NOT NULL,
   question_timestamp varchar(40),
   category_id varbinary(20) NOT NULL,
   category_name varchar(40) NOT NULL,
   choosen_answer varbinary(255),
   choosen_userId varchar(40),
   choosen_usernick varchar(40),
   choosen_ans_timestamp varchar(40),
   UNIQUE (question_id)
);
Run Code Online (Sandbox Code Playgroud)

通过python代码插入时出错:

Traceback (most recent call last):
  File "YahooQueryData.py", line 78, in <module>
    +"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", (row[2], row[5], row[6], quserId, questionTime, categoryId, categoryName, qChosenAnswer, choosenUserId, choosenNickName, choosenTimeStamp))
  File "/opt/local/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/MySQLdb/cursors.py", line 159, …
Run Code Online (Sandbox Code Playgroud)

python mysql unicode encode utf-8

28
推荐指数
2
解决办法
6万
查看次数

Python中预准备语句和参数化查询之间的混淆

据我所知,预备语句(主要)是一个数据库功能,允许您将参数与使用此类参数的代码分开.例:

PREPARE fooplan (int, text, bool, numeric) AS
    INSERT INTO foo VALUES($1, $2, $3, $4);
EXECUTE fooplan(1, 'Hunter Valley', 't', 200.00);
Run Code Online (Sandbox Code Playgroud)

参数化查询替代手动字符串插值,因此不是这样做

cursor.execute("SELECT FROM tablename WHERE fieldname = %s" % value)
Run Code Online (Sandbox Code Playgroud)

我们可以做的

cursor.execute("SELECT FROM tablename WHERE fieldname = %s", [value])
Run Code Online (Sandbox Code Playgroud)

现在,似乎准备好的语句大部分都用在数据库语言中,参数化查询主要用于连接数据库的编程语言,尽管我已经看到了这个规则的例外.

问题在于询问预准备语句和参数化查询之间的区别会带来很多混乱.他们的目的无疑是相同的,但他们的方法似乎是截然不同的.然而,有消息表明两者都是相同的.MySQLdb和Psycopg2似乎支持参数化查询,但不支持预处理语句(例如,这里是MySQLdb和postgres驱动程序TODO列表或sqlalchemy 组中的这个答案).实际上,有一个实现psycopg2游标的要点,支持准备好的语句和关于它的最小解释.还有一个建议是在psycopg2中继承游标对象以手动提供准备好的语句.

我想得到以下问题的权威答案:

  • 预准备语句和参数化查询之间是否存在有意义的区别?这在实践中是否重要?如果使用参数化查询,是否需要担心预处理语句?

  • 如果存在差异,Python生态系统中预准备语句的当前状态是什么?哪些数据库适配器支持预处理语

python database sql-injection prepared-statement parameterized-query

20
推荐指数
2
解决办法
1万
查看次数

MySQLdb模块是否支持预处理语句?

MySQLdb是否支持服务器端预处理语句?我无法从手册中弄清楚这一点.

python mysql prepared-statement

11
推荐指数
2
解决办法
6399
查看次数

在程序中使用了很多%s,如何将变量放在多行的末尾?

例如:

command """%s abc %s,
        abs %s jfh %s etc...""" % (var1, var2, var3, var4)
Run Code Online (Sandbox Code Playgroud)

我需要在多行中编写这些变量,因为代码中有很多变量(用于更新数据库).

测试:

% (var1, var2,\
var3,var4)
Run Code Online (Sandbox Code Playgroud)

不工作 (也在第一行末尾没有","测试)

错误:显示最后一个")"和:

SyntaxError: EOL while scanning string literal
Run Code Online (Sandbox Code Playgroud)

PS.我们得到了一个很好的答案,问题是"%s""""最后,它应该是:"%s"""" - 是的,一个空格解决了问题)))

python

1
推荐指数
1
解决办法
99
查看次数

使用 Python 在数据库中使用 Like 语句

我仍在学习 Python 作为出色的简单编程语言,问题出在 DataBase 上,我使用 MySQL 来构建它,然后我想从 Python 代码中选择一些元组,因为我确实编写了如下查询:

Q = "INSERT INTO contacts (FirstName,LastName,phone,mobile,email,address) VALUES('%s','%s','%s','%s','%s','%s') "% \
            (FN,LN,phone,Mobile,email,address)
Run Code Online (Sandbox Code Playgroud)

因为使用变量,所以没关系。
但是如果我想在查询中使用 (LIKE'') 语句,我会遇到引号麻烦!如下:

    Q = "SELECT LastName FROM contacts WHERE phone LIKE '_'%s'%'" %\
            (phone)
Run Code Online (Sandbox Code Playgroud)

我能做些什么来解决这个问题,有什么提示吗?

python mysql database

0
推荐指数
1
解决办法
1796
查看次数

如何使用python将文本文件存储到MySQL数据库中

import MySQLdb
import re

def write():
    file = open('/home/fixstream/Desktop/test10.txt', 'r')
    print file.read()
    file.close()
write()
Run Code Online (Sandbox Code Playgroud)

我上面的代码,现在我想将文本文件存储到mysql数据库中.我是python以及数据库的新手.所以任何人都可以帮助我吗?

python-2.7

-2
推荐指数
1
解决办法
1万
查看次数