
settingspy
if DEBUG:
DATABASES = {
'default': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'
'NAME': '库名', # Or path to database file if using sqlite3
'USER': 'root', # Not used with sqlite3
'PASSWORD': '', # Not used with sqlite3
'HOST': '', # Set to empty string for localhost Not used with sqlite3
'PORT': '3306', # Set to empty string for default Not used with sqlite3
},
'库名': {
'ENGINE': 'mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'
'NAME': '库名', # Or path to database file if using sqlite3
'USER': 'root', # Not used with sqlite3
'PASSWORD': '', # Not used with sqlite3
'HOST': '', # Set to empty string for localhost Not used with sqlite3
'PORT': '3306', # Set to empty string for default Not used with sqlite3
}
}
MySQLdbconnect是python 连接MySQL数据库的方法,在Python中 import MySQLdb即可使用,至于connect中的参数很简单:\x0d\host:MySQL服务器名\x0d\user:数据库使用者\x0d\password:用户登录密码\x0d\db: *** 作的数据库名\x0d\charset:使用的字符集(一般是gb2312)\x0d\cursor = dbcursor() 其实就是用来获得python执行Mysql命令的方法,也就是\x0d\我们所说的 *** 作游标\x0d\下面cursorexecute则是真正执行MySQL语句,即查询TABLE_PARAMS表的数据。\x0d\至于fetchall()则是接收全部的返回结果行 row就是在python中定义的一个变量,用来接收返回结果行的每行数据。同样后面的r也是一个变量,用来接收row中的每个字符,如果写成C的形式就更好理解了\x0d\for(string row = ''; row回答于 2022-11-16
1、python安装目录设定为d:/python34
2、pymysql安装方法为:解压下载的文件,在cmd中运行: python setuppy install。
检验安装安装是否成功的方法:import pymysql 。 如果不报错 说明安装成功。
3、mysql安装目录为D:/phpStudy/MySQL。为避免更多配置问题,可在启动phpstudy后,将其设为系统服务
4、基本 *** 作:
(1)导入pymysql: import pymysql
(2)连接数据库:
conn=pymysqlconnect(host='localhost',user='root',passwd='root',db='ere',charset='utf8')
务必注意各等号前面的内容!charset参数可避免中文乱码
(3)获取 *** 作游标:cur=conncursor()
(4)执行sql语句,插入记录:sta=curexecute("insert 语句") 执行成功后sta值为1。更新、删除语句与此类似。
(5)执行sql语句,查询记录:curexecute("select语句") 执行成功后cur变量中保存了查询结果记录集,然后再用循环打印结果:
for each in cur:
print(each[1]decode('utf-8')) # each[1] 表示当前游标所在行的的第2列值,如果是中文则需要处理编码
Python和MySQL是「两个国家的人」,他们互不相通,因而需要一个中间代理,让双方互通有无,跟翻译一样(这比喻不准确,但足够你明白意思就行)。翻译又有很多选择,不同的翻译各有特色。
题主解决问题选择的翻译是「flask-mysqldb」,其背后的主子是「MySQL-python」。恩,说到这里你应该知道,「flask-xxx」这样的包都是对背后主子进行了适合Flask封装的插件,跟包子皮一样,里面的馅才是重点,「flask-mysqldb」的馅是「MySQL-python」。
而我要推荐的是另一个翻译:PyMySQL,这玩意的好处是可以做异步(「MySQL-python」也可以,个人口味罢了),简而言之,网站访问量大了就需要考虑异步,现在别管这是啥子。这玩意的安装方式是:
pip install PyMySQL
之后,数据库连接由:
mysql://username:password@server/db
改为
mysql+pymysql://username:password@server/db
就可以了。
1、python安装目录设定为d:/python34
2、pymysql安装方法为:解压下载的文件,在cmd中运行: python setuppy install。
检验安装安装是否成功的方法:import pymysql 。 如果不报错 说明安装成功。
3、mysql安装目录为D:/phpStudy/MySQL。为避免更多配置问题,可在启动phpstudy后,将其设为系统服务
4、基本 *** 作:
(1)导入pymysql: import pymysql
(2)连接数据库:
conn=pymysqlconnect(host='localhost',user='root',passwd='root',db='ere',charset='utf8')
务必注意各等号前面的内容!charset参数可避免中文乱码
(3)获取 *** 作游标:cur=conncursor()
(4)执行sql语句,插入记录:sta=curexecute("insert 语句") 执行成功后sta值为1。更新、删除语句与此类似。
(5)执行sql语句,查询记录:curexecute("select语句") 执行成功后cur变量中保存了查询结果记录集,然后再用循环打印结果:
for each in cur:
print(each[1]decode('utf-8')) # each[1] 表示当前游标所在行的的第2列值,如果是中文则需要处理编码
#连接数据库
conn = MySQLdbConnect(
host = 'localhost',
port = 3306,
user = 'root',
passwd = '',
db = 'mytest',
charset = 'utf8'
)
cursor = conncursor()
#创建一个表存储数据
sql_create = "create table if not exists account(nameid int, money varchar(100)) "
#插入两条数据
sql_insert1 = "insert into account(nameid,money) values(13,120)"
sql_insert2 = "insert into account(nameid,money) values(14,10)"
#执行上述sql语句
cursorexecute(sql_create)
cursorexecute(sql_insert1)
cursorexecute(sql_insert2)
connclose()
由于版本的不同,Python 连接 Hive 的方式也就不一样。
在网上搜索关键字 python hive 的时候可以找到一些解决方案。大部分是这样的,首先把hive 根目录下的$HIVE_HOME/lib/py拷贝到 python 的库中,也就是 site-package 中,或者干脆把新写的 python 代码和拷贝的 py 库放在同一个目录下,然后用这个目录下提供的 thrift 接口调用。示例也是非常简单的。类似这样:
import sys
from hive_service import ThriftHive
from hive_servicettypes import HiveServerException
from thrift import Thrift
from thrifttransport import TSocket
from thrifttransport import TTransport
from thriftprotocol import TBinaryProtocol
def hiveExe(sql):
try:
transport = TSocketTSocket('127001', 10000)
transport = TTransportTBufferedTransport(transport)
protocol = TBinaryProtocolTBinaryProtocol(transport)
client = ThriftHiveClient(protocol)
transportopen()
clientexecute(sql)
print "The return value is : "
print clientfetchAll()
print ""
transportclose()
except ThriftTException, tx:
print '%s' % (txmessage)
if __name__ == '__main__':
hiveExe("show tables")1234567891011121314151617181920212223242526272812345678910111213141516171819202122232425262728
或者是这样的:
#!/usr/bin/env python
import sys
from hive import ThriftHive
from hivettypes import HiveServerException
from thrift import Thrift
from thrifttransport import TSocket
from thrifttransport import TTransport
from thriftprotocol import TBinaryProtocol
try:
transport = TSocketTSocket('1418154188', 10000)
transport = TTransportTBufferedTransport(transport)
protocol = TBinaryProtocolTBinaryProtocol(transport)
client = ThriftHiveClient(protocol)
transportopen()
clientexecute("CREATE TABLE r(a STRING, b INT, c DOUBLE)")
clientexecute("LOAD TABLE LOCAL INPATH '/path' INTO TABLE r")
clientexecute("SELECT FROM test1")
while (1):
row = clientfetchOne()
if (row == None):
break
print rowve
clientexecute("SELECT FROM test1")
print clientfetchAll()
transportclose()
except ThriftTException, tx:
print '%s' % (txmessage)
12345678910111213141516171819202122232425262728293031323334351234567891011121314151617181920212223242526272829303132333435
但是都解决不了问题,从 netstat 中查看可以发现 TCP 连接确实是建立了,但是不执行 hive 指令。也许就是版本的问题。
还是那句话,看各种中文博客不如看官方文档。
项目中使用的 hive 版本是013,此时此刻官网的最新版本都到了121了。中间间隔了120、110、100、0140。但是还是参考一下官网的方法试试吧。
首先看官网的 setting up hiveserver2
可以看到启动 hiveserver2 可以配置最大最小线程数,绑定的 IP,绑定的端口,还可以设置认证方式。(之前一直不成功正式因为这个连接方式)然后还给了 python 示例代码。
import pyhs2
with pyhs2connect(host='localhost',
port=10000,
authMechanism="PLAIN",
user='root',
password='test',
database='default') as conn:
with conncursor() as cur:
#Show databases
print curgetDatabases()
#Execute query
curexecute("select from table")
#Return column info from query
print curgetSchema()
#Fetch table results
for i in curfetch():
print i123456789101112131415161718192021123456789101112131415161718192021
在拿到这个代码的时候,自以为是的把认证信息给去掉了。然后运行发现跟之前博客里介绍的方法结果一样,建立了 TCP 连接,但是就是不执行,也不报错。这是几个意思?然后无意中尝试了一下原封不动的使用上面的代码。结果可以用。唉。。。
首先声明一下,hive-sitexml中默认关于 hiveserver2的配置我一个都没有修改,一直是默认配置启动 hiveserver2。没想到的是默认配置是有认证机制的。
以上就是关于急!!用python连接数据库全部的内容,包括:急!!用python连接数据库、python连接MySQL数据库问题 cursor( ) 、execute()和fetc、python如何使用pymysql连接数据库封装类等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)